リストアビューから各データをリストアアップから取得するリストビューがあります。 リストビューの各アイテムには、テキストビューとトグルボタンが含まれています。 しかし、私はリストをスクロールするときに問題が発生します。チェックされたトグルボタンの状態が変化します。つまり、インデックス4のトグルボタンを選択した場合、スクロールした後、4番目以外のランダムボタンが選択されています。リストビューの切り替えボタンは、Androidの画面をスクロールしたときの状態を緩和します。
2
A
答えて
2
行がリサイクルされるため、独自の状態を維持して、ToggleButton
ステータスを保存して復元する必要があります。行内にRatingBar
を使用することを実証するHere is a sample project;同じ基本プロセスがToggleButton
のために保持されるはずです。
3
まだ解決策が得られない場合は、このgetviewメソッドを試してください。 // switchState []はブール値の配列です。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
// mSwitchButton = (ToggleButton) findViewById(R.id.switchButton);
if(convertView == null) {
convertView = mInflator.inflate(R.layout.settings_item_cell, parent, false);
holder.categoryName =
(TextView) convertView.findViewById(R.id.categoryType);
convertView.setTag(holder);
holder.switchButton = (ToggleButton) convertView.findViewById(R.id.switchButton);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.switchButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
int index = (Integer) v.getTag();
Log.v("tag of switch============",""+index);
if(((ToggleButton) v).isChecked()) {
switchState[index] = true;
((ToggleButton) v).setButtonDrawable(R.drawable.item_selected);
}
else {
((ToggleButton) v).setButtonDrawable(R.drawable.item_deselected);
switchState[index] =false;
}
isToggleButtonClicked = true;
}
});
if(switchState[position])
holder.switchButton.setButtonDrawable(R.drawable.item_selected);
else
holder.switchButton.setButtonDrawable(R.drawable.item_deselected);
holder.categoryName.setText(categories[position]);
holder.switchButton.setTag(new Integer(position));
return convertView;
}
0
私はこれが本当に古いスレッドであることを知っていますが、質問に見つかった回答は本当に素晴らしいものではありませんでした。 2つの答えから実行可能な解決策を得るまでには時間がかかりました。他のノブがスクロール中にどのようにトグルボタンの状態を保持しているかを調べようとしている場合は、作業コードを共有したいだけでした。このコードはコンパイル
private class MyListAdapter extends ArrayAdapter<Product> {
boolean [] switchState= new boolean[100] ;
public MyListAdapter() {
super(ProductSelectActivity.this, R.layout.item_view, myProducts);
}
public View getView(int position, View convertView, ViewGroup parent) {
// Make sure we have a view to work with (may have been given null)
ViewHolder holder;
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);
View row= itemView;
holder= new ViewHolder(row);
itemView.setTag(holder);
holder.switchButton = (ToggleButton) itemView.findViewById(R.id.favorite_button);
}
else
{
holder = (ViewHolder) itemView.getTag();
}
holder.switchButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
int index = (Integer) v.getTag();
if(((ToggleButton) v).isChecked()) {
switchState[index] = true;
((ToggleButton) v).setBackgroundResource(android.R.drawable.btn_star_big_on);
}
else {
((ToggleButton) v).setBackgroundResource(android.R.drawable.btn_star_big_off);
switchState[index] =false;
}
}
});
if(switchState[position])
holder.switchButton.setBackgroundResource(android.R.drawable.btn_star_big_on);
else
holder.switchButton.setBackgroundResource(android.R.drawable.btn_star_big_off);
//holder.categoryName.setText(categories[position]);
holder.switchButton.setTag(Integer.valueOf(position));
ViewHolder.class
public class ViewHolder {
ToggleButton switchButton=null;
ViewHolder(View base) {
this.switchButton=(ToggleButton)base.findViewById(R.id.favorite_button);
}
}
。
関連する問題
- 1. リストビューの切り替えボタンがスクロール時の状態を変更しました
- 2. Android:プログラムでボタンの押された状態を切り替える方法は?
- 3. クリックしたときにチェックボックスのチェック状態を切り替えます
- 4. Android:ボタンをクリックしたときにカメラを切り替える
- 5. AndroidデバイスのWifiの状態を切り替える
- 6. GL_TEXTURE_COORD_ARRAYとGL_COLOR_ARRAYクライアントの状態を切り替えるときの空白の画面
- 7. 2つのアイドル状態のアニメーション状態の切り替え
- 8. Silverlightボタン切り替え時の背景画像の変更状態
- 9. Kivy言語で画面を切り替えるボタン付き
- 10. iPhone - VIEWを切り替えるときの空白の画面
- 11. ボタンをクリックしたときのDateTimePickerビューの切り替え
- 12. Android - 5つのアクティビティと最初のアクティビティの状態を切り替える
- 13. Androidのどのようなボタンで状態の切り替え/変更ができますか?
- 14. Linuxでスイングフレームを切り替えるときの白い画面
- 15. Android - 同じxmlファイルでアクティビティと画面を切り替える
- 16. IOSでの画面切り替え
- 17. Androidでは、画面を切り替えるとGPSデータが失われます
- 18. メインアクティビティからボタンをクリックして次の画面に切り替える
- 19. 引き出しフラグメントナビゲーションを使用したボタンの切り替え
- 20. WebViewアクティビティ保持状態(リロードなし)の切り替え
- 21. GoogleグラフLineGraphの切り替えデータテーブルと状態の維持
- 22. Android:加速度計の回転状態の切り替えを設定する
- 23. ボタンをクリックしたときに2つの機能を切り替えます。
- 24. Androidの切り替えスイッチの画像
- 25. OpenLayers - 検出全画面、通常画面の切り替え
- 26. クラスタ内の別のマシンに状態サーバを切り替える
- 27. リアクションのliアイテムの状態としてのCSSの切り替え
- 28. 数秒後に画面を切り替える(スレッド/インテント) - Android
- 29. (Kivy Python)ボタンを押して画面を切り替える.pyファイル内
- 30. 画面を切り替えるためのJavaScriptライブラリ
私はToggleButtonでそれをしようとすると、その上のテキストがスクロールしながら上の項目に移動します – Mikey