1

アクティビティに ListView があります。以下は、ListViewの行にOnClickListenerを設定する方法です

 listview.setAdapter(new RowsArrayAdapter(this, rows));

 listview.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         CheckedTextView ctv = (CheckedTextView) lv.getChildAt(position).findViewById(R.id.row_checkbox);
         ctv.setChecked(true);

 });

RowsArrayAdapter の getView() メソッドは次のとおりです。

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

         LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

         View rowView = inflater.inflate(R.layout.row_layout, parent, false);

         CheckedTextView row = (CheckedTextView) rowView.findViewById(R.id.row_checkbox);
         row.setText(values[position].getRow_no());

         return rowView;
}

最初の 8 行では問題なく動作します。配列の行の長さを確認しました。その16は正しいです。しかし、下にスクロールして行12などの行をクリックすると、NullPointerExceptionが発生します。その理由と、どうすれば修正できますか。前もって感謝します。

4

3 に答える 3

0

使用する必要があります。

 CheckedTextView ctv = (CheckedTextView) view.findViewById(R.id.row_checkbox);
于 2013-09-30T14:14:04.850 に答える