ListAdapter列表适配器
ListAdapter列表适配器其实是继承了BaseAdapter
示例图:
MainActivity
package com.shaoxin.mylistadapter; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.shaoxin.mylistadapter.R.drawable.b; import static com.shaoxin.mylistadapter.R.drawable.c; public class MainActivity extends ListActivity { private List<Map> list; private String[] strPerson = {"妹子", "美女", "美美", "大美女"}; private int[] iDrawble = {R.drawable.a, b, c, R.drawable.d}; MyAdapter myAdapter; private float fFirstx; private float fSecx; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView textView = (TextView) view.findViewById(R.id.txt); Log.v("msg", textView.getText().toString()); } }); list = new ArrayList<>(); for (int i = 0; i < strPerson.length; i++) { Map map = new HashMap(); map.put("person", strPerson[i]); map.put("id", iDrawble[i]); list.add(map); } myAdapter = new MyAdapter(); setListAdapter(myAdapter); } public class MyAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHold viewHold = new ViewHold(); if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.listview_item, null); viewHold.strName = (TextView) convertView.findViewById(R.id.txt); viewHold.iDrawable = (ImageView) convertView.findViewById(R.id.img); viewHold.button = (Button) convertView.findViewById(R.id.btn_del); convertView.setTag(viewHold); } else { viewHold = (ViewHold) convertView.getTag(); } viewHold.iDrawable.setImageResource((Integer) list.get(position).get("id")); viewHold.strName.setText(list.get(position).get("person").toString()); viewHold.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { list.remove(position); myAdapter.notifyDataSetChanged(); } }); convertView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: fSecx = event.getX(); if ((fSecx - fFirstx) > 10) { ViewHold viewHold = (ViewHold) v.getTag(); viewHold.button.setVisibility(Button.VISIBLE); viewHold.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { list.remove(position); myAdapter.notifyDataSetChanged(); } }); } break; case MotionEvent.ACTION_DOWN: fFirstx = event.getX(); break; case MotionEvent.ACTION_MOVE: break; } return true; } }); return convertView; } class ViewHold { private TextView strName; private ImageView iDrawable; private Button button; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.shaoxin.mylistadapter.MainActivity"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
listview_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:maxHeight="100dp" android:maxWidth="100dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/img" android:layout_toEndOf="@+id/img" android:layout_toRightOf="@+id/img" android:text="hello world" /> <Button android:id="@+id/btn_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" android:layout_alignBaseline="@+id/txt" android:visibility="gone" android:layout_alignBottom="@+id/txt" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> </RelativeLayout>