我的listview适配器未设置初始选定行。
我拉出当前选择的卡车钥匙。然后我拉出可能的卡车钥匙列表。我将所选键与可能键列表进行比较,如果匹配,我将其设置为选中。
如果我触摸一行,它会突出显示。但我希望它在加载时自动突出显示所选键。
我已经尝试在加载数据后在各个地方调用 adapter.notifyDataSetChanged();
,但似乎没有任何效果。
任何人都可以看到我做错了吗?
某些控制台输出显示if语句正在正常触发。
**某些控制台输出**
Curent位置键:1010卡车:116 - 选择键:1014
Curent位置键:1014卡车:12355 - 选择键:1014匹配找到
Curent位置键:1020卡车:16 - 选择键:1014
Curent位置键:1015卡车:186 - 选择键:1014
我的适配器:
public class TruckAdapter extends BaseAdapter {
private final ArrayList mArrayList;
public TruckAdapter(ArrayList<HashMap<String, String>> map) {
mArrayList = map;
}
@Override
public int getCount() {
return mArrayList.size();
}
@Override
public HashMap<String, String> getItem(int position) {
return (HashMap<String, String>) mArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_truck, parent, false);
}
HashMap<String, String> item = getItem(position);
TextView truckname = (TextView) convertView.findViewById(R.id.tvTruckName);
truckname.setText(item.get("TRUCK").toString());
if (Integer.parseInt(item.get("KEY")) == selectedTruckKey) {
Log.d(TAG, "Curent positions key: " +Integer.parseInt(item.get("KEY")) + " truck: " + item.get("TRUCK")+ " - Selected Key: "+ selectedTruckKey + " MATCH FOUND");
convertView.setSelected(true);
} else {
Log.d(TAG, "Curent positions key: " +Integer.parseInt(item.get("KEY")) + " truck: " + item.get("TRUCK")+ " - Selected Key: "+ selectedTruckKey );
}
return convertView;
}
}
我的XML
<ListView
android:id="@+id/lvTrucks"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:listSelector="@color/LIGHT_YELLOW" />
我的行项目XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tvTruckName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:height="45dp"
android:padding="8dp"
android:paddingLeft="25dp"
android:textColor="@color/COLOR_TXI_GREY"
android:text="Name"/>
</LinearLayout>