单击项目时获取listview中的位置

时间:2016-10-06 13:54:19

标签: android listview android-studio baseadapter onitemclicklistener

你好我是Android的新手,我正在创建一个自定义列表视图来显示事物列表。列表显示完美但当我点击一个项目时,应用程序崩溃并抛出ResourceNotFound异常。它应该是Toast点击项目的位置。请帮忙!(我在片段中做这个,但我不认为这是问题。)

这是我的BaseAdapter:

public class myAdapter extends BaseAdapter{
    Context context;
    public LayoutInflater layoutInflater;
    public myAdapter(Context c){
        context=c;
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        return apModuleArrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public class viewHolder{
        ImageView logo;
        TextView name,account,password;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        viewHolder viewHolder=new viewHolder();
        if (convertView==null){
            convertView = layoutInflater.inflate(R.layout.list_item,null);
            viewHolder.logo=(ImageView)convertView.findViewById(R.id.imageView);
            viewHolder.name=(TextView)convertView.findViewById(R.id.textView9);
            viewHolder.account=(TextView)convertView.findViewById(R.id.textView10);
            viewHolder.password=(TextView)convertView.findViewById(R.id.textView11);
            convertView.setTag(viewHolder);
        }else{
            viewHolder=(viewHolder)convertView.getTag();
        }
        viewHolder.name.setText(apModuleArrayList.get(position).getname());
        viewHolder.account.setText(apModuleArrayList.get(position).getAccount());
        viewHolder.password.setText(apModuleArrayList.get(position).getpassword());
        return convertView;
    }
}

我的SetOnItemClickedListener:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getContext(),position,Toast.LENGTH_SHORT).show();
        }
}

这是我的logcat:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: earth.planet.passwordguard, PID: 29622
              android.content.res.Resources$NotFoundException: String resource ID #0x0
                  at android.content.res.Resources.getText(Resources.java:337)
                  at android.content.res.MiuiResources.getText(MiuiResources.java:123)
                  at android.widget.Toast.makeText(Toast.java:292)
                  at earth.planet.passwordguard.Fragment1$1.onItemClick(Fragment1.java:72)
                  at android.widget.AdapterView.performItemClick(AdapterView.java:305)
                  at android.widget.AbsListView.performItemClick(AbsListView.java:1146)
                  at android.widget.AbsListView$PerformClick.run(AbsListView.java:3072)
                  at android.widget.AbsListView$3.run(AbsListView.java:3908)
                  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:5290)
                  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:911)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您想要打印位置int,如果您阅读文档,当您将int发送到Toast时,它会认为它是资源ID。试试这种方式:

Toast.makeText(getContext(), "" + position, Toast.LENGTH_SHORT).show();

这样,您将位置转换为字符串,并将其视为文本。

相关问题