ListView未设置初始选定行

时间:2017-01-04 20:35:31

标签: java android listview android-adapter

我的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>

0 个答案:

没有答案