ListViewについてです。
setOnItemClickListenerで、
その列だけのレイアウトを変更する、ということはできるでしょうか?
できるのであれば回答お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
レイアウトを管理しているのはListViewにセットするアダプタなので、
onItemClickedの時にクリックした列番号の情報をアダプタに伝えて、
アダプタ内でその列番号に対するgetViewで使うレイアウトを変更するくらいでしょうか…。
リスト表示するデータが独自クラスのものであれば、そのクラスに「クリックされたか」などという状態を表すフラグを持たせておいて、アダプタのgetViewでそのフラグの状態を見てレイアウトを選択する、という方法も考えられます。
アダプタにおいて
java
1public class TestAdapter extends ArrayAdapter<Test> { 2 3 private Set<Integer> clickedRow = new HashSet<Integer>(); 4 5 .... 6 7 //クリックされた列を追加する 8 public void addClicked(int position){ 9 clickedRow.add(position); 10 //情報が更新されたことをリストに通知し、画面を更新する 11 notifyDataSetChanged(); 12 } 13 14 public View getView (int position, View convertView, ViewGroup parent){ 15 if(clickedRow.contains(position)){ 16 //「クリックされた列」の場合のレイアウト設定 17 } else { 18 //「クリックされていない列」の場合のレイアウト設定 19 } 20 } 21}
こんな感じのことをして、ListViewのクリックイベントにおいて
java
1public class MyActivity extends Activity { 2 3 protected void onCreate(Bundle savedInstanceState) { 4 .... 5 listView.setOnItemClickListener(new OnItemClickListener(){ 6 @Override 7 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 8 TestAdapter adapter = (TestAdapter)listView.getAdapter(); 9 adapter.addClicked(position); 10 } 11 } 12 13}
こんな感じでできないでしょうか(未検証です)。
投稿2016/01/02 04:35
編集2016/01/02 05:09総合スコア20649
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/02 04:49
2016/01/02 05:02 編集
2016/01/02 05:00
2016/01/02 06:45