我正在尝试从“多个项目”列表视图中获取数据,但是当尝试在onListItemClick上获取内容时,我一直收到错误消息。
在以下情况下似乎要我创建方法:

i.putExtra("title", this.getItem(position).getTitle());

叫做。
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);
    mInflater = (LayoutInflater) getSystemService(
    Activity.LAYOUT_INFLATER_SERVICE);
    data = new Vector<RowData>();
    for(int i=0;i<title.length;i++){
    try {
        rd = new RowData(i,title[i],detail[i]);
        } catch (ParseException e) {
            e.printStackTrace();
       }
       data.add(rd);
    }
       CustomAdapter adapter = new CustomAdapter(this, R.layout.list, R.id.title, data);
       setListAdapter(adapter);
       getListView().setTextFilterEnabled(true);
    }


         public void onListItemClick(ListView parent, View v, int position,
        long id) {


               Intent i = new Intent(this,ShowDetails.class);
              Bundle bundle = new Bundle();
               i.putExtra("title", this.getItem(position).getTitle());
               i.putExtra("title", this.getItem(position).getDetail());
               setResult(ShowDetails.RESULT_OK, i);
               finish();
        }


 private class CustomAdapter extends ArrayAdapter<RowData> {
  public CustomAdapter(Context context, int resource,
                        int textViewResourceId, List<RowData> objects) {
 super(context, resource, textViewResourceId, objects);
}
      @Override
       public View getView(int position, View convertView, ViewGroup parent) {
       ViewHolder holder = null;
       TextView title = null;
       TextView detail = null;
       ImageView i11=null;
       RowData rowData= getItem(position);
       if(null == convertView){
            convertView = mInflater.inflate(R.layout.list, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
 }
             holder = (ViewHolder) convertView.getTag();
             title = holder.gettitle();
             title.setText(rowData.mTitle);
             detail = holder.getdetail();
             detail.setText(rowData.mDetail);
             i11=holder.getImage();
             i11.setImageResource(imgid[rowData.mId]);
             return convertView;
}
            private class ViewHolder {
            private View mRow;
            private TextView title = null;
            private TextView detail = null;
            private ImageView i11=null;
            public ViewHolder(View row) {
            mRow = row;
 }
         public TextView gettitle() {
             if(null == title){
                 title = (TextView) mRow.findViewById(R.id.title);
                }
            return title;
         }
         public TextView getdetail() {
             if(null == detail){
                  detail = (TextView) mRow.findViewById(R.id.detail);
                    }
           return detail;
         }
        public ImageView getImage() {
             if(null == i11){
                  i11 = (ImageView) mRow.findViewById(R.id.img);
                                      }
                return i11;
        }
     }

最佳答案

首先,您具有gettitle()方法,而不是适配器中定义的getTitle()。

getTitle()是适配器的方法。 getItem(position)返回RowData类型的对象,该对象没有这种方法。

此外,getTitle()返回一个TextView。您确定要通过Intent或此TextView的字符串传递TextView吗?

10-07 23:07