ListView的用法以及即时刷新
来源:互联网 发布:os x 10.10优化 编辑:程序博客网 时间:2024/06/04 23:44
最近写了一个关于Android开发的项目,其中用到了ListView,在这里总结一下。这是我的ListView
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/topicliist" android:layout_width="match_parent" android:layout_height="wrap_content" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="8dp" /> </LinearLayout></android.support.constraint.ConstraintLayout>
之后再创建一个自己想用ListView显示的Item,因为我的是显示选择题,所以会有点多
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/questionS" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="选择题" android:textSize="28sp"/> <RadioGroup android:id="@+id/selectanwser" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/optionA" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="28sp"/> <RadioButton android:id="@+id/optionB" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="28sp"/> <RadioButton android:id="@+id/optionC" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="28sp"/> <RadioButton android:id="@+id/optionD" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="28sp"/> </RadioGroup></LinearLayout>
在Activity中
import android.content.DialogInterface;import android.content.Intent;import android.support.v7.app.ActionBar;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ListView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class TopicActivity extends AppCompatActivity { private ListView topicList; private List<Topic> topics=new ArrayList<Topic>(); private TopicAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_topic); topicList=(ListView)findViewById(R.id.topicliist); init(); adapter=new TopicAdapter(TopicActivity.this ,R.layout.topic_select_item,topicSelect); //将数据放入Adapter topicList.setAdapter(adapter); addquestion.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LayoutInflater inflater = (LayoutInflater) TopicActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE); public void init() { Topic t2=new Topic(); t2.setQuestion("问题()"); t2.setA("A"); t2.setB("B"); t2.setC("C"); t2.setD("D"); topicSelect.add(t2); }}
其中TopicAdapter如下:
package login.example.coursemanager;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.RadioButton;import android.widget.TextView;import java.util.List;public class TopicAdapter extends ArrayAdapter<Topic> { private int resourceId; private List<Topic> mlist; public TopicAdapter(Context context,int textViewResourceId,List<Topic> objects) { super(context,textViewResourceId,objects); resourceId=textViewResourceId; mlist=objects; } public View getView(int position, View convertView, ViewGroup parent) { Topic topic=getItem(position); View view ; TopicAdapter.ViewHolder viewHolder; if(convertView == null) { view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false); viewHolder=new TopicAdapter.ViewHolder(); viewHolder.question=(TextView)view.findViewById(R.id.questionS); viewHolder.optionA=(RadioButton)view.findViewById(R.id.optionA); viewHolder.optionB=(RadioButton)view.findViewById(R.id.optionB); viewHolder.optionC=(RadioButton)view.findViewById(R.id.optionC); viewHolder.optionD=(RadioButton)view.findViewById(R.id.optionD); view.setTag(viewHolder); } else { view=convertView; viewHolder=(TopicAdapter.ViewHolder) view.getTag(); } viewHolder.question.setText(topic.getQuestion()); viewHolder.optionA.setText(topic.getA()); viewHolder.optionB.setText(topic.getB()); viewHolder.optionC.setText(topic.getC()); viewHolder.optionD.setText(topic.getD()); return view; } class ViewHolder { TextView question; RadioButton optionA; RadioButton optionB; RadioButton optionC; RadioButton optionD; TextView anwser; } public void refresh(List<Topic> l) { mlist=l; notifyDataSetChanged(); }}
Topic只是一个普通的类,包含四个选项和问题的属性,均是String类型的。像这样写Adapter可以提高LIstView的效率,每次刷新不用全部重新加载。
对于ListView的即时更新问题,可以自己写一个refresh方法,也可以调用他自带的notifyDataSetChanged()方法,每次只要在List对象发生改变的时候最直接调用,就可以刷新ListView。
阅读全文
0 0
- ListView的用法以及即时刷新
- 即时刷新的新闻
- datagrid的即时刷新
- datagrid的即时刷新
- ListView以及Adapter的用法
- Android 固定头部的ListView以及下拉刷新(附源码)
- photoshopCS3 不能即时刷新操作的解决方法
- CursorLoaderSms。 Loader 实现短信的即时刷新
- 创建即时刷新的物化视图
- android解决listview与scrollview的冲突、自定义listview的高度以及上下拉刷新
- ListView的观察者模式的应用,以及调用notifyDataSetChanged()方法时,为什么会刷新ListView
- Listview的下拉刷新
- listView的下拉刷新
- listview的局部刷新
- ListView的局部刷新
- ListView的局部刷新
- listview的局部刷新
- ListView的局部刷新
- Nodemcu网络模块学习记录
- JDK绿色化安装,随意切换多版本
- Hadoop1.2.1全分布式模式配置
- [24]_五脏俱全的嵌入式数据库Sqlite学习总结
- 随便写写
- ListView的用法以及即时刷新
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A所有情况的和
- 集成方法stacking的简单阐述
- 猜猜输出什么,为什么?
- HTML基础(3.1 input)
- 腾讯分析系统架构解析
- Struts2监听器(拦截结果监听器)
- 浅谈对Java内存的一些认知
- 计算机视觉中,目标跟踪算法的综述