API 8 で動作する必要があるプロジェクトに取り組んでいるので、最低限の API 10 以上が必要なため、行を強調表示する方法に関する多くの例が機能しないことがわかりました。
だから私は周りを見回して、OnListItemClickを介して蛍光ペンを機能させましたが、私の問題は、リストに複数のアイテムがある場合、複数のアイテムを選択できることです。これは私が望んでいるものではありません
次を使用して、行を強調表示および強調表示解除しました。
if (selectedrow == 0) {
((TextView)v).setBackgroundColor(Color.rgb(0, 153, 204));
selectedrow = 1;
oki.setEnabled(true);
currpos = position;
File fileselected = new File(pathi.get(currpos));
} else {
((TextView)v).setBackgroundColor(Color.TRANSPARENT);
selectedrow = 0;
oki.setEnabled(false);
currpos = -1;
}
複数の行が強調表示されていることに気付いたとき、上記のコードの前に次のことを試しました。
if (currpos != -1 ) {
((ListView)l).smoothScrollToPosition(currpos);
((TextView)v).setBackgroundColor(Color.TRANSPARENT);
((ListView)l).smoothScrollToPosition(position);
selectedrow = 0;
}
また、次のように上記を試しました。
if (currpos != -1 ) {
((ListView)l).setSelection(currpos);
((TextView)v).setBackgroundColor(Color.TRANSPARENT);
((ListView)l).setSelection(position);
selectedrow = 0;
}
編集*
カスタムアダプターは現在機能しており、次のようになっていますが、ハイライターはまだ問題です。コードを投稿することで、これが明らかになることを願っています。
public class FileListAdapter extends ArrayAdapter<String> {
private List<String> itemsll;
public FileListAdapter(Context context, int row,
List<String> iteml) {
super(context,row,iteml);
// TODO Auto-generated constructor stub
this.itemsll = iteml;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View viewnull = convertView;
if (viewnull == null) {
LayoutInflater vrow;
vrow = LayoutInflater.from(getContext());
viewnull = vrow.inflate(R.layout.row, null);
}
String currow = itemsll.get(position);
TextView rowtext = (TextView)viewnull.findViewById(R.id.rowtext);
rowtext.setText(currow);
if (currpos == position) {
rowtext.setBackgroundColor(Color.BLUE);
}
return viewnull;
}
public void setSelectedPosition( int pos )
{
currpos = pos; // selectedPos is global variable to handle clicked position
// inform the view of this change
notifyDataSetChanged();
}
}
次に、次のように onItemClick を追加しました。
public void onItemClick( AdapterView<?> arg0,View arg1, int arg2, Long arg3) {
int pos = arg2;
fl.setSelectedPosition(pos);
}
解決しました。
onListItemClick と onItemClick を使用できないことをすぐに登録し、クラスが ListActivity であるため、Listview lw = getListView() を使用してから onItemClick メソッドを使用する必要がありました