リストビュー用のアダプターを使用してプログラミングしていますが、ユーザーがリストビュー要素に触れたときに強調表示されたままになるようにしたいです。以下のコードを使用して成功しました。しかし、スムーズなパフォーマンスのために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));
};
});