リストアビューから各データをリストアアップから取得するリストビューがあります。 リストビューの各アイテムには、テキストビューとトグルボタンが含まれています。 しかし、私はリストをスクロールするときに問題が発生します。チェックされたトグルボタンの状態が変化します。つまり、インデックス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. Android:プログラムでボタンの押された状態を切り替える方法は?
- 2. Android:ボタンをクリックしたときにカメラを切り替える
- 3. AndroidデバイスのWifiの状態を切り替える
- 4. GL_TEXTURE_COORD_ARRAYとGL_COLOR_ARRAYクライアントの状態を切り替えるときの空白の画面
- 5. Silverlightボタン切り替え時の背景画像の変更状態
- 6. iPhone - VIEWを切り替えるときの空白の画面
- 7. Androidのどのようなボタンで状態の切り替え/変更ができますか?
- 8. Android - 5つのアクティビティと最初のアクティビティの状態を切り替える
- 9. Linuxでスイングフレームを切り替えるときの白い画面
- 10. WebViewアクティビティ保持状態(リロードなし)の切り替え
- 11. メインアクティビティからボタンをクリックして次の画面に切り替える
- 12. GoogleグラフLineGraphの切り替えデータテーブルと状態の維持
- 13. Androidでは、画面を切り替えるとGPSデータが失われます
- 14. Android:加速度計の回転状態の切り替えを設定する
- 15. クラスタ内の別のマシンに状態サーバを切り替える
- 16. 数秒後に画面を切り替える(スレッド/インテント) - Android
- 17. 画面を切り替えるためのJavaScriptライブラリ
- 18. のAndroidアプリの問題をタブを切り替えるときの状態を失い、オリエンテーション
- 19. トグルボタンの値を渡して、iPhoneの別のクラスのボタンの状態を切り替える
- 20. Tabボタンを押したときのみ2つのテキストエリアを切り替える
- 21. ボタンを押したときに次のビューに切り替えるには?
- 22. antlr3文法でのレクサー状態の切り替え
- 23. MapView:MKUserTrackingBarButtonItemを使用して、マップのトラッキング状態を切り替える
- 24. JToggleButtonを使用して3つの状態を切り替える
- 25. タッチスクリーン上でドラッグして画面を切り替える
- 26. iOSビュー/コントローラのライフサイクルコールバック画面のロック解除またはアプリの切り替え
- 27. ボタンを押したときに別のビューに切り替える
- 28. さまざまな画面幅を切り替えるモバイルスタイルシート
- 29. スウィフト画像全画面表示の切り替え
- 30. Slide 2つの異なるCSS状態を切り替えます
私はToggleButtonでそれをしようとすると、その上のテキストがスクロールしながら上の項目に移動します – Mikey