0

すべてのリストビュー要素で、ボタンに1つのImageButtonの表示を変更させようとしています。私が抱えている問題は、アクセスする適切な要素を見つけることです。これは、カスタムアダプタの特定の要素にアクセスする簡単な方法がないためです(私は思います)

関連するコード部分:

 public View getView(final int position, final View convertView, final ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
    {
        vi = inflater.inflate(R.layout.custom_row_view, null);
    }

/*
 other non important view stuff
*/
if(deleteButton != null){
        deleteButton.setVisibility(View.INVISIBLE);
        deleteButton.setTag(position);
        deleteButton.setOnClickListener(deleteListener);
    }

    return vi;
}

public void setVisibility()
{
    if(deleteButton.getVisibility() == View.INVISIBLE){
        deleteButton.setVisibility(View.VISIBLE); //Here i  want to access all elements
        Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag()); 
//Logcat output: Changing to 0 element: 2


    } else if(deleteButton.getVisibility() == View.VISIBLE){
        deleteButton.setVisibility(View.INVISIBLE); 
        Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag());
//Logcat output: Changing to 4 element: 2

    }
}

メインアクティビティで使用するもの:

CustomAdapter listAdapter;
ListView listViewLeft;
ListView listViewRight;

OnCreate:
listAdapter=new CustomAdapter(this, link, names, names2, buttonText,context, plistArray); 
listViewLeft.setAdapter(listAdapter);
listViewRight.setAdapter(listAdapter);

私は単に以下を使用してメソッドを呼び出します:

OnClickListener editListener = new OnClickListener() {
    public void onClick(View view) {
        listAdapter.setVisibility();
       }
 }

誰かが何かアイデアを持っているなら、私は本当にそれを感謝します、ありがとう:)

4

2 に答える 2

0

非表示のボタンまたは可視性の値を持つアイテムのインデックスをアダプタに保存し、それを(すべてのview / convertViewに可視性を設定するだけで)で使用する必要がありますgetView()。これは、ListView側からのビューの再利用に関連しています。それを修正する方法についてのアイデアを得るためにここで私の答え
を参照してください、そしてリストビューの詳細についてはこのRomain Guy Google I/Oトークに

于 2012-09-20T09:57:06.547 に答える
0

それは本当に簡単な修正でした。電話するのを忘れました:

listAdapter.notifiDataSetChanged(); 

ただし、そのメソッドを呼び出すたびにgetViewメソッドが呼び出されるため、これをカスタムアダプターgetViewに追加しました。

if(deleteButton != null){
        if(deleteButton.getVisibility() == View.INVISIBLE){
            deleteButton.setVisibility(View.VISIBLE);
        } else if(deleteButton.getVisibility() == View.VISIBLE){
            deleteButton.setVisibility(View.INVISIBLE); 
            }
        deleteButton.setTag(position);
        deleteButton.setOnClickListener(deleteListener);
    }

そして、XMLのデフォルトを表示に設定します。これが最も効率的な方法かどうかはわかりませんが、少なくとも意図したとおりに機能します:)

于 2012-09-20T11:19:49.337 に答える