0

コスチューム化されたArrayAdapterを使用したリストビューがあります。リストの子(single_row.xml)内にテキストビューとトグルボタンがあります。トグルボタンは、リストアイテムをお気に入りとしてマーク/マーク解除するためのものです。データベース(SQLite)を更新するには、トグルボタンの横にある対応するテキストビューにアクセスする必要があります。

私の問題は、対応するテキストビューを取得する方法がわからないことです。それらがどのように関連しているかはわかりません。

質問が明確であることを願っています。ありがとう

4

1 に答える 1

0

listView のパフォーマンスを改善するための推奨される方法の 1 つは、 getView ()メソッドでViewHolderを使用することです。この ViewHolder オブジェクトは通常、setTag()メソッドを使用してビューにアタッチされ、たとえば onClick(View) リスナー メソッドで行内のすべてのビューを取得できるようにします。

あなたの場合、同じ方法を使用できますが、ToggleButton で、行の重要な情報を持つオブジェクトをそれにアタッチします。次に、onCheckedChangedListenerで、押された ToggleButton を受け取り、 getTag() メソッドを使用して、データベースを更新するために必要なすべての情報とともに、以前に保存されたオブジェクトを取得できます。このようなもの:


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

 //Other stuff here

 ToggleButton tb = (ToggleButton)row.findViewById(R.id.toggle_button);

 //Attach to the toggle button whatever object you need
 tb.setTag("Put an object here");
 tb.setOnCheckedChangedListener(new OnCheckedChangedListener(){
       @Override
       public void onCheckedChanged(CompoundButton button, boolean isChecked){
             Object relatedData = button.getTag();
             //Update the database with the relatedData
       }
 });

 //Other stuff

 return row;
}
于 2012-12-18T19:43:15.547 に答える