Android中listView選中第一行,或任意一行(listView優化,很標準)
阿新 • • 發佈:2019-01-24
效果圖:
程式碼:
javaBean:<span style="font-size:18px;">public class MainActivity extends Activity { private ListView listview; private PersonAdapter adapter; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.context = MainActivity.this; listview = (ListView) findViewById(R.id.list_view_parent); adapter = new PersonAdapter(context, getPersons()); listview.setAdapter(adapter); adapter.setDefSelect(0); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { adapter.setDefSelect(position); Person p = (Person) listview.getItemAtPosition(position); Toast.makeText(context, p.toString(), Toast.LENGTH_SHORT) .show(); } }); } public List<Person> getPersons() { List<Person> persons = new ArrayList<Person>(); Person p1 = new Person(); p1.setName("張三"); p1.setSex("20"); Person p2 = new Person(); p2.setName("李四"); p2.setSex("21"); Person p3 = new Person(); p3.setName("王五"); p3.setSex("22"); Person p4 = new Person(); p4.setName("招六"); p4.setSex("23"); Person p5 = new Person(); p5.setName("李四"); p5.setSex("24"); persons.add(p1); persons.add(p2); persons.add(p3); persons.add(p4); persons.add(p5); return persons; } class PersonAdapter extends BaseAdapter { private Context context; private List<Person> persons; private ViewHolder holder; private int defItem; public PersonAdapter(Context context, List<Person> persons) { super(); this.context = context; this.persons = persons; } @Override public int getCount() { return persons.size(); } @Override public Object getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } public void setDefSelect(int position) { this.defItem = position; notifyDataSetChanged(); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(context).inflate( R.layout.list_parent_item, null); holder = new ViewHolder(); holder.item1 = (TextView) convertView.findViewById(R.id.item1); holder.item2 = (TextView) convertView.findViewById(R.id.item2); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (defItem == position) { convertView .setBackgroundResource(R.drawable.selector_package_list_n); } else { convertView.setBackgroundResource(android.R.color.transparent); } Person person = persons.get(position); holder.item1.setText(person.getName()); holder.item2.setText(person.getSex()); return convertView; } class ViewHolder { TextView item1, item2; } } } </span>
<span style="font-size:18px;">public class Person { private String name; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "Person [name=" + name + ", sex=" + sex + "]"; } }</span>
佈局:
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@+id/list_view_parent" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_list_item" android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent" /> </RelativeLayout></span>
<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/item1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:id="@+id/item2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" />
</LinearLayout></span>
原始碼下載
Android中listView選中第一行,或任意一行,選中後能取消