0

リストビュー用のアダプターを使用してプログラミングしていますが、ユーザーがリストビュー要素に触れたときに強調表示されたままになるようにしたいです。以下のコードを使用して成功しました。しかし、スムーズなパフォーマンスのためにAndroidがレイアウトをリサイクルしているため、行1、行11、21、31などをクリックすると強調表示されます。次に下にスクロールすると、行 1 は選択されなくなりますが、行 4、14、24 などが強調表示されます。これは私が使用したコードです

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.row, collection);            
onelist.setAdapter(arrayAdapter);
onelist.setOnItemClickListener(new OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id)
    {
        str1 = (String)onelist.getItemAtPosition(position);
        str1 = str1.toLowerCase();
        Toast.makeText(context, str1 + " clicked in Fragment " + fragmentNo, Toast.LENGTH_LONG).show();

        if(lastColored != null)
        {
            lastColored.setBackgroundColor(Color.TRANSPARENT);
            lastColored.invalidate();
        }
        lastColored = v;
        v.setBackgroundColor(Color.rgb(51, 181, 229));

     };
});
4

5 に答える 5

0

BaseAdapter を拡張し、リストビュー要素の backgorund にセレクターを使用してみましたか? BaseAdapter に関するチュートリアル: http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-baseadapter/
セレクターに関するいくつかの情報: http://www.mkyong. com/android/android-imagebutton-selector-example/

それが役に立てば幸い

于 2013-05-27T08:27:10.133 に答える
0

おそらく、どのアイテムを強調する必要があるかを記録する必要があります。ビューを変換するため、クリアすることを忘れないでください。

于 2013-05-27T08:47:04.763 に答える
0

getView()methodの Adapter クラスに Background リソースを設定します。言われたようPawel Calaに、そのビューにはセレクターを使用してください。

于 2013-05-27T08:46:21.390 に答える