关于listview和adapter的作业
老师要求我们完成个人信息的列表,此时需要运用到Listview和Adapter来完成此项布局的显示,第一部分代码如下:
<ListView
android:id="@+id/w"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
第二部分就要做出第一个人的信息布局,其他人的信息复制第一个人的即可,其代码如下:
<LinearLayout
android:orientation="vertical"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_weight="5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"
android:text="姓名:"/>
<TextView
android:id="@+id/n"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"
android:text="年龄:"/>
<TextView
android:id="@+id/a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"
android:text="邮箱:"/>
<TextView
android:id="@+id/m"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"
android:text="地址:"/>
<TextView
android:id="@+id/s"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"/>
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/w"
android:layout_width="100dp"
android:layout_height="150dp" />
</LinearLayout>
其布局效果如图:
第三部分代码如下:
package com.example.mpyypm.qwer.testlistview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class InfoAdapter extends BaseAdapter {
private List<PersonInfo> info;
private Context context;
public InfoAdapter(Context context , List info){
this.context = context;
this.info = info;
}
@Override
public int getCount() {
return info.size();
}
@Override
public Object getItem(int i) {
return info.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
holder = new ViewHolder();
view= LayoutInflater.from(context).inflate(R.layout.list_item,null);
holder.n=(TextView) view.findViewById(R.id.n);
holder.a = (TextView)view.findViewById(R.id.a);
holder.m = (TextView)view.findViewById(R.id.m);
holder.s = (TextView)view.findViewById(R.id.s);
holder.w= (ImageView)view.findViewById(R.id.w);
Personinfo personInfo= info.get(i);
holder.n.setText(personInfo.getN());
holder.a.setText(personInfo.getA());
holder.m.setText(personInfo.getM());
holder.s.setText(personInfo.getS());
holder.tu.setImageResource(personInfo.getW());
return view;
}
class ViewHolder{
TextView n;
TextView a;
TextView m;
TextView s;
ImageView w;
}
}
接着来储存人物的信息,其代码如下:
package com.example.mpyypm.qwer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class PersonInfo {
private String n;
private String a;
private String m;
private String s;
private int w;
public PersonInfo(String name, String age, String mail, String addess, int tu) {
this.n = n;
this.a = a;
this.m = m;
this.s = s;
this.w = w;
}
public String getN() {
return n;
}
public String getA() {
return a;
}
public String getM() {
return m;
}
public String getS() {
return s;
}
public int getW() {
return w;
}
}
最后,将每个人的信息填入空格内,其代码如下:
package com.example.mpyypm.qwer.testlistview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private InfoAdapter infoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<PersonInfo> info = getInfo();
infoAdapter =new InfoAdapter(MainActivity.this,info);
ListView listView =(ListView)findViewById(R.id.lt_info);
listView.setAdapter(infoAdapter);
}
public ArrayList<PersonInfo> getInfo() {
ArrayList<PersonInfo> info = new ArrayList<>();
info.add(new PersonInfo("蔡志坤","25","ffczk86@gmail.com","厦门市",R.drawable.czk));
info.add(new PersonInfo("李杰华","25","aa@bb.com","漳州市",R.drawable.ljh));
info.add(new PersonInfo("张亮","25","cc@gmail.com","厦门市",R.drawable.zl));
info.add(new PersonInfo("陈旭","25","ccadd@gmail.com","厦门市",R.drawable.cx));
return info;
}
}
其效果如图:
浙公网安备 33010602011771号