Android   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android-Intent在我的RecyclerView中不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用以下代码

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;


public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    public MyAdapter (Context context, ArrayList<PersonData>peopleDataSet) {
        this.context = context;
        this.peopleDataSet = peopleDataSet;
    }

    Context context;

    private ArrayList<PersonData> peopleDataSet;

    public static class MyViewHolder extends RecyclerView.ViewHolder {



        TextView textViewName;
        TextView textViewEmail;
        ImageView imageViewIcon;
        Button button;

        public MyViewHolder(View itemView) {
            super(itemView);
            this.textViewName = (TextView) itemView.findViewById(R.id.textViewName);
            this.textViewEmail = (TextView) itemView.findViewById(R.id.textViewEmail);
            this.imageViewIcon = (ImageView) itemView.findViewById(R.id.imageView);
            this.button = (Button) itemView.findViewById(R.id.button);
        }
    }

    public MyAdapter(ArrayList<PersonData> peoplE) {
        this.peopleDataSet = people;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent,
                                           int viewTypE) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.cards_layout, parent, falsE);

        view.setOnClickListener(MainActivity.myOnClickListener);

        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {

        TextView textViewName = holder.textViewName;
        final TextView textViewEmail = holder.textViewEmail;
        ImageView imageView = holder.imageViewIcon;
        Button button = holder.button;
        button.setOnClickListener(new View.onClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(context, MainActivity2Activity.class);
                context.startActivity(myIntent);
            }
        });
        textViewName.setText(peopleDataSet.get(listPosition).getName());
        textViewEmail.setText(peopleDataSet.get(listPosition).getEmail());
        imageView.setImageresource(peopleDataSet.get(listPosition).getImage());



    }
    @Override
    public int getItemCount() {
        return peopleDataSet.size();
    }
}

但是当我按下按钮时,出现以下错误
尝试在空对象引用上调用虚拟方法java.lang.String android.content.Context.getPackagename()

还有一个问题,如何识别“列表”中的每个按钮,以便它们将启动不同的活动.

@H_710_0@mainActivity2Activity.java

import android.support.v7.app.ActionBarActivity;
import android.os.bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity2Activity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_main_activity2);
    }


    @Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
        return true;
    }

    @Override
    public Boolean onOptionsItemSELEcted(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_setTings) {
            return true;
        }
        return super.onOptionsItemSELEcted(item);
    }
}

logcat的

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackagename()' on a null object reference
            at android.content.ComponentName.<init>(ComponentName.java:77)
            at android.content.Intent.<init>(Intent.java:4000)
            at info.osoap.myapplicationzzz.MyAdapter$1.onClick(MyAdapter.java:70)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallBACk(Handler.java:739)
            at android.os.Handler.dispatchmessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
@H_710_0@mainActivity.java

import android.content.Context;
import android.os.bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.linearlayoutmanager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.button;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;


public class MainActivity extends ActionBarActivity {

    private static RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    private static RecyclerView recyclerView;
    private static ArrayList<PersonData> people;
    static View.onClickListener myOnClickListener;
    private static ArrayList<Integer> removedItems;

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_main);




        myOnClickListener = new MyOnClickListener(this);

        recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        recyclerView.setHasFixedSize(true);

        layoutManager = new linearlayoutmanager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());

        people = new ArrayList<PersonData>();
        for (int i = 0; i < MyData.nameArray.length; i++) {
            people.add(new PersonData(
                    MyData.nameArraY[i],
                    MyData.emailArraY[i],
                    MyData.drawableArraY[i],
                    MyData.id_[i]
            ));
        }

        removedItems = new ArrayList<Integer>();

        adapter = new MyAdapter(peoplE);
        recyclerView.setAdapter(adapter);
    }


    private static class MyOnClickListener implements View.onClickListener {

        private final Context context;

        private MyOnClickListener(Context context) {
            this.context = context;
        }

        @Override
        public void onClick(View v) {
            removeItem(v);
        }

        private void removeItem(View v) {
            int SELEctedItemPosition = recyclerView.getChildPosition(v);
            RecyclerView.ViewHolder viewHolder
                    = recyclerView.findViewHolderForPosition(SELEctedItemPosition);
            TextView textViewName
                    = (TextView) viewHolder.itemView.findViewById(R.id.textViewName);
            String SELEctedName = (String) textViewName.getText();
            int SELEctedItemId = -1;
            for (int i = 0; i < MyData.nameArray.length; i++) {
                if (SELEctedName.equals(MyData.nameArraY[i])) {
                    SELEctedItemId = MyData.id_[i];
                }
            }
            removedItems.add(SELEctedItemId);
            people.remove(SELEctedItemPosition);
            adapter.notifyItemRemoved(SELEctedItemPosition);
        }
    }

    @Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public Boolean onOptionsItemSELEcted(MenuItem item) {
        super.onOptionsItemSELEcted(item);
        if (item.getItemId() == R.id.action_add_item) {
//            check if any items to add
            if (removedItems.size() != 0) {
                addRemovedItemToList();
            } else {
                Toast.makeText(this, "Nothing to add", Toast.LENGTH_SHORT).show();
            }
        }
        return true;
    }

    private void addRemovedItemToList() {
        int addItemAtListPosition = 3;
        people.add(addItemAtListPosition, new PersonData(
                MyData.nameArraY[removedItems.get(0)],
                MyData.emailArraY[removedItems.get(0)],
                MyData.drawableArraY[removedItems.get(0)],
                MyData.id_[removedItems.get(0)]
        ));
        adapter.notifyItemInserted(addItemAtListPosition);
        removedItems.remove(0);
    }
}

解决方法:

上下文可能为null尝试如下:

 public void onClick(View v) {
    Intent myIntent = new Intent(v.getContext(), MainActivity2Activity.class);
     v.getContext().startActivity(myIntent);
  }

大佬总结

以上是大佬教程为你收集整理的Android-Intent在我的RecyclerView中不起作用全部内容,希望文章能够帮你解决Android-Intent在我的RecyclerView中不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: