Получение данных из нескольких элементов ListView? - PullRequest
1 голос
/ 15 декабря 2011

Я пытаюсь получить данные из списка просмотра нескольких элементов, но я продолжаю получать ошибки, когда пытаюсь получить 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;
        }
     }

1 Ответ

1 голос
/ 15 декабря 2011

Сначала у вас есть метод gettitle (), а не getTitle (), определенный в вашем адаптере.

getTitle () - это метод адаптера. GetItem (position) возвращает объект типа RowData, который не имеет такого метода.

Кроме того, getTitle () возвращает TextView. Вы уверены, что хотите передать TextView через намерение или строку этого TextView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...