1. 程式人生 > >ListView點選Item更換顯示內容圖片

ListView點選Item更換顯示內容圖片

先上效果圖

這裡寫圖片描述

佈局檔案(就是一個listView)

<?xml version="1.0" encoding="utf-8"?>
<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">

    <ListView
        android:id
="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"/>
</RelativeLayout>

activity中的程式碼,模擬的假資料設定listView

public class MainActivity extends Activity {

private ListView lv;
private ArrayList<String> list;
private MyAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initLayout();

}

private void initLayout() {
    if(list == null){
        list = new ArrayList<>();
    }

    for (int i = 0; i < 20; i++) {
        list.add("正常顯示.....");
    }

    lv = (ListView) findViewById(R.id.lv);
    adapter = new MyAdapter(list,this);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            adapter.setCurrentPosition(position);
            adapter.notifyDataSetChanged();
        }
    });
}

}

設定Adapter,主要的點選和切換事件都在這裡面,這裡是通過動態來添加布局內容的

public class MyAdapter extends BaseAdapter {

    int mCurrentPos;
    ArrayList<String> list;
    Context mContext;

    public MyAdapter(ArrayList<String> list,Context context) {
        this.list = list;
        this.mContext = context;
    }

    public
void setCurrentPosition(int position){ this.mCurrentPos = position; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout layout = new LinearLayout(mContext); layout.setOrientation(LinearLayout.VERTICAL); //說明點選的是當前的位置,設定為獲取焦點 if(mCurrentPos == position){ layout.addView(addFocusView()); }else{ layout.addView(addNormalView(position)); } layout.setGravity(Gravity.CENTER); return layout; } /** * 獲取焦點的位置 */ public View addFocusView(){ ImageView iv = new ImageView(mContext); iv.setLayoutParams(new LinearLayout.LayoutParams(150,150)); iv.setImageResource(R.drawable.focus); return iv; } /** * 正常情況下listView的內容顯示 */ public View addNormalView(int position){ LinearLayout layout = new LinearLayout(mContext); layout.setOrientation(LinearLayout.HORIZONTAL); ImageView iv = new ImageView(mContext); iv.setImageResource(R.drawable.nomal); layout.addView(iv, new LinearLayout.LayoutParams(150,150)); TextView tv = new TextView(mContext); tv.setText(list.get(position)); tv.setTextSize(30); layout.addView(tv,new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); layout.setGravity(Gravity.CENTER); return layout; } }