工程结构图
main-xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lv_main_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
item-xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon_img"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:src="@mipmap/ic_launcher_round" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:orientation="vertical">
<TextView
android:id="@+id/title_tv"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_0"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:id="@+id/time_tv"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_0"
android:layout_weight="1"
android:gravity="center" />
</LinearLayout>
<CheckBox
android:id="@+id/cb_item_check"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
Acivity中代码
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends Activity {
public static final boolean LOG_BOOT = true;
public static final String TAG = "godv";
//item的个数
private static final int COUNT = 300;
private List<MyTestBean> mBeans;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.lv_main_show);
mBeans = new ArrayList<>();
for (int i = 0; i < COUNT; i++) {
MyTestBean bean = new MyTestBean();
bean.setmTime("godv_time:" + new Date());
bean.setmTitle("godv_title:" + i);
mBeans.add(bean);
}
// ArrayAdapter<String> stringArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);
// listView.setAdapter(stringArrayAdapter);
MyBaseAdapter myBaseAdapter = new MyBaseAdapter(this);
myBaseAdapter.setmList(mBeans);
listView.setAdapter(myBaseAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "godv:" + i, Toast.LENGTH_SHORT).show();
if (LOG_BOOT)
Log.i(TAG, mBeans.get(i).getmTitle());
}
});
}
}
实体类
public class MyTestBean {
private String mTitle;
private String mTime;
private boolean mIsGodv;
public MyTestBean() {
}
public MyTestBean(String mTitle, String mTime, boolean mIsGodv) {
this.mTitle = mTitle;
this.mTime = mTime;
this.mIsGodv = mIsGodv;
}
public String getmTitle() {
return mTitle;
}
public void setmTitle(String mTitle) {
this.mTitle = mTitle;
}
public String getmTime() {
return mTime;
}
public void setmTime(String mTime) {
this.mTime = mTime;
}
public boolean ismIsGodv() {
return mIsGodv;
}
public void setmIsGodv(boolean mIsGodv) {
this.mIsGodv = mIsGodv;
}
@Override
public String toString() {
return "MyTestBean{" +
"mTitle='" + mTitle + '\'' +
", mTime='" + mTime + '\'' +
", mIsGodv=" + mIsGodv +
'}';
}
}
baseadapter类
package com.example.godv_view;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener {
private static final String TIP = "我是GODV";
private Context mContext;
MainActivity mMain;
private List<MyTestBean> mList;
public MyBaseAdapter() {
super();
mMain = new MainActivity();
}
public MyBaseAdapter(Context mContext) {
this.mContext = mContext;
}
public List<MyTestBean> getmList() {
return mList;
}
public void setmList(List<MyTestBean> mList) {
this.mList = mList;
//通知视图刷新
notifyDataSetChanged();
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
// TextView textView = new TextView(mContext);
//参数三 要不要加进去
if (view == null) {
//引入布局
Log.i("guoshuaiyu", "null");
view = LayoutInflater.from(mContext).inflate(R.layout.item_godv, viewGroup, false);
//创建一个holder
holder = new ViewHolder(view);
//将converView与holder关联
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// TextView titleTv = view.findViewById(R.id.title_tv);
// TextView timeTv = view.findViewById(R.id.time_tv);
holder.mCheck.setText(i + "");
holder.mCheck.setOnCheckedChangeListener(this);
if (mList.get(i).ismIsGodv()) {
holder.mTitleTv.setText(TIP);
holder.mCheck.setChecked(true);
holder.mIcon.setImageResource(R.mipmap.godb);
view.setBackgroundColor(Color.GREEN);
} else {
holder.mTitleTv.setText(mList.get(i).getmTitle());
holder.mIcon.setImageResource(R.mipmap.ic_launcher_round);
holder.mCheck.setChecked(false);
view.setBackgroundColor(Color.RED);
}
holder.mTimeTv.setText(mList.get(i).getmTime());
return view;
}
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
// Toast.makeText(compoundButton.getContext(), compoundButton.getText().toString(), Toast.LENGTH_SHORT).show();
MyTestBean myTestBean = mList.get(Integer.parseInt(compoundButton.getText().toString()));
if (b) {
myTestBean.setmIsGodv(true);
} else
myTestBean.setmIsGodv(false);
notifyDataSetChanged();
}
class ViewHolder {
private TextView mTitleTv;
private TextView mTimeTv;
private CheckBox mCheck;
private ImageView mIcon;
public ViewHolder(View view) {
if (MainActivity.LOG_BOOT)
Log.i("godv", "构造器");
this.mTitleTv = view.findViewById(R.id.title_tv);
this.mTimeTv = view.findViewById(R.id.time_tv);
this.mCheck = view.findViewById(R.id.cb_item_check);
this.mIcon = view.findViewById(R.id.icon_img);
}
}
}
最终的效果图 忽略配色