2017-01-27 3 views
0

私のリストビューには、1行に1つのボタンがあります。クリックすると、この線の色が変わります。 問題はスクロール中です...デフォルトに戻るか、他の行に色付けされています。スクロール時にリストビューを色づけします

ボタンリスニングはboolean型があれば(真のボタンの状態を示しているどこにHashMapを使用してボタンの状態を保存することができ、私は一度、このように気にいらに直面した

public CustomAdapter(Context context, List<Map<String, String>> items, int resource, String[] from, int[] to) { 
    super(context, items, resource, from, to); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 

    final View line = view; 
    TextView txtid = (TextView) view.findViewById(R.id.txtid); 
    TextView txtnumber = (TextView) view.findViewById(R.id.txtnumber); 

    Button btn = (Button) view.findViewById(R.id.btncheck); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if (txtnumber.getText().toString().equals(KEY-CODE)){ 
       line.setBackgroundColor(0x7F00FF00); 
      }else { 
       line.setBackgroundColor(0x7FFF0000); 
      } 
     } 
    });   

    return view; 
} 
+0

あなたがビューにロードするために使用しているリスト内のアイテムに色を追加し、そのアイテムの値を変更します(すでにポジションを取得しています)。 – zombie

答えて

1

アダプタの内側にコード化されていますクリックされ、false otherwhise)、getItemView内で現在のボタンがクリックされているかどうかをHashMapから確認する。

コードを少し:getItemView内部

最初

if(map.get(v.findViewById(R.id.button)) == null) 
     map.put(v.findViewById(R.id.button)),false); 

とtrueにブール設定]ボタンをクリックした後(クリックされていない)falseに、各ボタンを初期化します。

map.put(v.findViewById(R.id.button)),true); 

を呼び出し、ブール値がtrueまたはfalseに設定されているかどうかを確認し、色を設定します。

+0

とこの場合、クリック後にリロードする必要がありますか? – user1801745

+0

私はあなたの質問をよく理解していませんが、どういう意味ですか? –

+0

色分けのための新しい値を取るためにリストをリロードする – user1801745

関連する問題