Java 基于自己的类的ListView
我是android开发新手,所以我对动态列表有问题 我有一个习惯类和HabitMemoryDao类,我想在主类中创建一个ListView 习惯。 是否有人编写了主类,其中Listview将显示所有习惯。 谢谢Java 基于自己的类的ListView,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我是android开发新手,所以我对动态列表有问题 我有一个习惯类和HabitMemoryDao类,我想在主类中创建一个ListView 习惯。 是否有人编写了主类,其中Listview将显示所有习惯。 谢谢 公共课堂习惯{ 私有字符串名称; 私人日期开始日期; 私有整数持续时间; 私有int frequencyInWeek;//从1到7 私有字符串awardText; 公共字符串getName(){ 返回名称; } 公共void集合名(字符串名){ this.name=名称; } 公共日期ge
公共课堂习惯{
私有字符串名称;
私人日期开始日期;
私有整数持续时间;
私有int frequencyInWeek;//从1到7
私有字符串awardText;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共日期getStartDate(){
返回起始日期;
}
公共作废设置开始日期(日期开始日期){
this.startDate=startDate;
}
public int getDuration(){
返回时间;
}
公共void setDuration(int duration){
这个。持续时间=持续时间;
}
公共整数getFrequencyInWeek(){
每周返回频率;
}
公共无效设置频率每周(整数频率){
this.frequencyInWeek=频率;
}
公共字符串getAward(){
返回awardText;
}
公众奖(字符串奖){
this.awardText=奖励;
}
}
公共类HabitMemoryDao{
private List habitList=new LinkedList();
公共HabitMemoryDao(){
习惯习惯1=新习惯();
habit1.setName(“正在运行”);
习惯1.设定持续时间(30);
habit1.每周设置频率(2);
habit1.setStartDate(新日期());
habitList.add(habit1);
习惯习惯2=新习惯();
习惯2.设置名称(“游泳”);
习惯2.设定持续时间(15);
习惯2.每周设置频率(7);
habit2.setStartDate(新日期());
habitList.add(habit2);
}
公共列表getHabitList(){
返回习惯列表;
}
您需要了解ListView和适配器如何相互配合:
所以有两种方法可以开始:您可以使用ArrayAdapter,它使用习惯类的toString()方法在ListView中显示习惯列表,或者使用功能更强大的类BaseAdapter。我建议您了解BaseAdapter的工作原理,因为ArrayAdapter是BaseAdapter的子类
顺便说一句:找给你写具体代码的人不是个好主意。欢迎你问一些关于具体问题的问题,人们会回答你(大多数时候是用代码片段)。首先在你的习惯类中添加toString()
方法
public class Habit{
...
public String toString()
{
return getName()+" "+getStartDate()+" "+getDuration()+" "+getFrequencyInWeek()+" "+getAward();
}
...
}
然后在您的main活动中
看看这个基本的ListView
教程,您将了解它。
最好的方法是创建自己的ArrayAdapter。示例实现:
public class HabitAdapter extends ArrayAdapter<Habit> {
private ArrayList<Habit> items;
Activity activity;
static class ViewHolder {
public TextView nameTv;
public TextView startDateTv;
public TextView awardTextTv;
}
public HabitAdapter(Activity activity, int textViewResourceId,
ArrayList<Habit> items) {
super(activity, textViewResourceId, items);
this.items = items;
this.activity = activity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getLayoutInflater();
rowView = inflater.inflate(R.layout.row_layout_for_one_habit, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.nameTv = (TextView) rowView.findViewById(R.id.nameTv);
viewHolder.startDateTv = (TextView) rowView
.findViewById(R.id.startDateTv);
viewHolder.awardTextTv = (TextView) rowView
.findViewById(R.id.awardTextTv);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
Habit habit = items.get(position);
holder.nameTv.setText(habit.getName());
holder.startDateTv.setText(habit.getStartDate());
holder.awardTextTv.setText(habit.getAwardText());
return rowView;
}
您的习惯类需要一个toString函数,该函数将用于显示对象内容,然后您可以迭代地将习惯对象添加到列表视图模型中。。。。
public class HabitAdapter extends ArrayAdapter<Habit> {
private ArrayList<Habit> items;
Activity activity;
static class ViewHolder {
public TextView nameTv;
public TextView startDateTv;
public TextView awardTextTv;
}
public HabitAdapter(Activity activity, int textViewResourceId,
ArrayList<Habit> items) {
super(activity, textViewResourceId, items);
this.items = items;
this.activity = activity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getLayoutInflater();
rowView = inflater.inflate(R.layout.row_layout_for_one_habit, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.nameTv = (TextView) rowView.findViewById(R.id.nameTv);
viewHolder.startDateTv = (TextView) rowView
.findViewById(R.id.startDateTv);
viewHolder.awardTextTv = (TextView) rowView
.findViewById(R.id.awardTextTv);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
Habit habit = items.get(position);
holder.nameTv.setText(habit.getName());
holder.startDateTv.setText(habit.getStartDate());
holder.awardTextTv.setText(habit.getAwardText());
return rowView;
}
ListView myList = (ListView) findViewById(R.id.myList);
HabitAdapter ha = new HabitAdapter(this, R.layout.row_layout_for_one_habit, HabitMemoryDao.getHabitList());
myList.setAdapter(ha);