这学期选了安卓应用开发,这个课的老师操着一口浓重的方言,再配上带有电流声的麦,我无论是坐在第一排还是最后一排,我根本听不懂这个老师在说什么,如果不是因为这个老师是黄皮肤黑眼睛,我真的怀疑是尼加拉瓜的老师来给我们上课了。而且这个老师留的作业巨多,我还没有太好的Java基础,导致我有的逻辑代码根本不会写。为了应对这个问题,我打算整理一下写过的Java代码,以便考试的时候找到直接用。
sampleAdapter的实现
public class MainActivity extends AppCompatActivity {
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView)findViewById(R.id.lv_1);
//这里应该是获取标签
SimpleAdapter simpleAdapter = new SimpleAdapter(this,putData(),R.layout.layout_list_item,
new String[]{"tv_1","iv","tv_2","tv_3","tv_4","tv_5"},new int[]{R.id.tv_1,R.id.iv,R.id.tv_2,R.id.tv_3,R.id.tv_4,R.id.tv_5});
listview.setAdapter(simpleAdapter);
}
//输入数据
public List<Map<String,Object>> putData(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("tv_1", "16201");
map1.put("tv_2", "505313");
map1.put("tv_3", "移动应用开发技术");
map1.put("tv_4", "尚老师");
map1.put("tv_5", "学校课表班课");
map1.put("iv", R.drawable.pic);
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("tv_1", "17104");
map2.put("tv_2", "605454");
map2.put("tv_3", "移动应用开发技术");
map2.put("tv_4", "尚老师");
map2.put("tv_5", "学校课表班课");
map2.put("iv", R.drawable.pic);
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("tv_1", "17101");
map3.put("tv_2", "939789");
map3.put("tv_3", "java程序设计");
map3.put("tv_4", "尚老师");
map3.put("tv_5", "学校课表班课");
map3.put("iv", R.drawable.pic);
Map<String,Object> map4 = new HashMap<String,Object>();
map4.put("tv_1", "16101");
map4.put("tv_2", "952532");
map4.put("tv_3", "移动应用开发技术");
map4.put("tv_4", "尚老师");
map4.put("tv_5", "学校课表班课");
map4.put("iv", R.drawable.pic);
Map<String,Object> map5 = new HashMap<String,Object>();
map5.put("tv_1", "16104");
map5.put("tv_2", "449884");
map5.put("tv_3", "移动应用开发技术");
map5.put("tv_4", "尚老师");
map5.put("tv_5", "学校课表班课");
map5.put("iv", R.drawable.pic);
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
list.add(map5);
//设置点击事件
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int p, long id) {
//用Toast显示课程名
String name = list.get(p).get("tv_3").toString();
Toast.makeText(getApplicationContext(), "课程名:" + name, Toast.LENGTH_SHORT).show();
}
});
return list;
}
继承BaseAdapter实现的自定义Adapter
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.lv_1);
// listView.setAdapter(new MyListAdapter(MainActivity.this));
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("iv",R.drawable.pic);
map.put("tv_1", "16201");
map.put("tv_2", "505313");
map.put("tv_3", "移动应用开发技术");
map.put("tv_4", "魏老师");
map.put("tv_5", "学校课表班课");
list.add(map);
map = new HashMap<String, Object>();
map.put("tv_1", "17104");
map.put("tv_2", "605454");
map.put("tv_3", "移动应用开发技术");
map.put("tv_4", "魏老师");
map.put("tv_5", "学校课表班课");
map.put("iv", R.drawable.pic);
list.add(map);
map = new HashMap<String, Object>();
map.put("tv_1", "17101");
map.put("tv_2", "939789");
map.put("tv_3", "java程序设计");
map.put("tv_4", "魏老师");
map.put("tv_5", "学校课表班课");
map.put("iv", R.drawable.pic);
list.add(map);
map = new HashMap<String, Object>();
map.put("tv_1", "16101");
map.put("tv_2", "952532");
map.put("tv_3", "移动应用开发技术");
map.put("tv_4", "魏老师");
map.put("tv_5", "学校课表班课");
map.put("iv", R.drawable.pic);
list.add(map);
map = new HashMap<String, Object>();
map.put("tv_1", "16104");
map.put("tv_2", "449884");
map.put("tv_3", "移动应用开发技术");
map.put("tv_4", "魏老师");
map.put("tv_5", "学校课表班课");
map.put("iv", R.drawable.pic);
list.add(map);
MyListAdapter adapter = new MyListAdapter(this);
adapter.setList(list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TextView name = (TextView) findViewById(R.id.tv_3);
String name = list.get(position).get("tv_3").toString();
Toast.makeText(getApplicationContext(), "课程名:" + name, Toast.LENGTH_SHORT).show();
}
});
}
}
MyListAdapter.java
public class MyListAdapter extends BaseAdapter {
List<Map<String,Object>> list;
// private Context mContext;
LayoutInflater mLayoutInflater;
public MyListAdapter(Context context){
// this.mContext = context;
mLayoutInflater = LayoutInflater.from(context);
}
public void setList(List<Map<String, Object>> list) {
this.list = list;
}
@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) {
View view = mLayoutInflater.inflate(R.layout.layout_list_item,null);
ImageView iv = (ImageView) view.findViewById(R.id.iv);
TextView tv_1 = (TextView) view.findViewById(R.id.tv_1);
TextView tv_2 = (TextView) view.findViewById(R.id.tv_2);
TextView tv_3 = (TextView) view.findViewById(R.id.tv_3);
TextView tv_4 = (TextView) view.findViewById(R.id.tv_4);
TextView tv_5 = (TextView) view.findViewById(R.id.tv_5);
iv.setImageResource((Integer) list.get(position).get("iv"));
tv_1.setText((String) list.get(position).get("tv_1"));
tv_2.setText((String) list.get(position).get("tv_2"));
tv_3.setText((String) list.get(position).get("tv_3"));
tv_4.setText((String) list.get(position).get("tv_4"));
tv_5.setText((String) list.get(position).get("tv_5"));
return view;
}
}
以上两种都是基于listView的adapter
接下来是基于RecyclerView的adapter
RecyclerView
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
MyAdapter mMyAdapter;
List<Map<String, Object>> mNewsList = new ArrayList<Map<String, Object>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到id
mRecyclerView = findViewById(R.id.recyclerview);
//构造数据
Map<String, Object> map = new HashMap<String, Object>();
map.put("iv", R.drawable.pic1);
map.put("tv_title", "安踏(A N T A)安踏男鞋跑步2020春季运动鞋透气休闲舒适百搭");
map.put("tv_subtitle", "男子跑鞋 | 运动舒适 | 透气休闲");
map.put("tv_price", "¥169");
map.put("tv_price_title", "闪购价");
map.put("tv_little_title", "自营 放心购 领券199减10");
map.put("tv_comment", "20万条+评价 97%好评");
mNewsList.add(map);
map = new HashMap<String, Object>();
map.put("iv", R.drawable.pic2);
map.put("tv_title", "安踏男鞋运动鞋男夏季薄款鞋子透气网鞋男士休闲鞋官网旗舰跑步鞋");
map.put("tv_subtitle", "网面透气 | 防滑耐磨 | 运动休闲百搭");
map.put("tv_price", "¥159");
map.put("tv_price_title", " ");
map.put("tv_little_title", "京东物流 领券199减10");
map.put("tv_comment", "20万条+评价 97%好评");
mNewsList.add(map);
map = new HashMap<String, Object>();
map.put("iv", R.drawable.pic3);
map.put("tv_title", "361度男鞋运动鞋子夏季网面q弹减震软底超轻跑鞋专业马拉松跑步鞋");
map.put("tv_subtitle", "保暖透气 | 系带设计 | 回弹缓震");
map.put("tv_price", "¥108");
map.put("tv_price_title", "秒杀价");
map.put("tv_little_title", "自营 放心购 满100减10");
map.put("tv_comment", "20万条+评价 97%好评");
mNewsList.add(map);
map = new HashMap<String, Object>();
map.put("iv", R.drawable.pic4);
map.put("tv_title", "特步男鞋2021夏季新款跑步鞋飞织透气跑鞋轻便网面运动鞋男学生鞋");
map.put("tv_subtitle", "轻便缓震 | 网面透气 | 舒适百搭");
map.put("tv_price", "¥139");
map.put("tv_price_title", " ");
map.put("tv_little_title", "京东物流 领券199减20");
map.put("tv_comment", "10万条+评价 97%好评");
mNewsList.add(map);
class MyViewHoder extends RecyclerView.ViewHolder {
TextView tv_title;
TextView tv_subtitle;
TextView tv_price;
TextView tv_price_title;
TextView tv_little_title;
TextView tv_comment;
ImageView iv;
public MyViewHoder(@NonNull View itemView) {
super(itemView);
iv = itemView.findViewById(R.id.iv);
tv_title = itemView.findViewById(R.id.tv_title);
tv_subtitle = itemView.findViewById(R.id.tv_subtitle);
tv_price = itemView.findViewById(R.id.tv_price);
tv_price_title = itemView.findViewById(R.id.tv_price_title);
tv_little_title = itemView.findViewById(R.id.tv_little_title);
tv_comment = itemView.findViewById(R.id.tv_comment);
}
}
class Myadapter extends RecyclerView.Adapter<MyViewHoder> implements com.example.myapplication5_17.MyAdapter {
@NonNull
@Override
public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list,parent,false);
MyViewHoder myViewHoder = new MyViewHoder(view);
return myViewHoder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHoder holder, int position) {
holder.iv.setImageResource((Integer) mNewsList.get(position).get("iv"));
holder.tv_title.setText((String) mNewsList.get(position).get("tv_title"));
holder.tv_subtitle.setText((String) mNewsList.get(position).get("tv_subtitle"));
holder.tv_price.setText((String) mNewsList.get(position).get("tv_price"));
holder.tv_price_title.setText((String) mNewsList.get(position).get("tv_price_title"));
holder.tv_little_title.setText((String) mNewsList.get(position).get("tv_little_title"));
holder.tv_comment.setText((String) mNewsList.get(position).get("tv_comment"));
//点击事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mNewsList.get(position).get("tv_title").toString();
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return mNewsList.size();
}
}
mMyAdapter = new Myadapter();
mRecyclerView.setAdapter((RecyclerView.Adapter) mMyAdapter);
//设置布局(线性布局)
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
mRecyclerView.setLayoutManager(layoutManager);
//网格布局
// GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this,3);
// // layoutManager.setOrientation(RecyclerView.HORIZONTAL); 也能设置横向滚动
// mRecyclerView.setLayoutManager(layoutManager);
}
}
以上就是折磨了我近一个月的Java代码。