关于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;
}

}
其效果如图:

posted on 2017-05-02 21:55  林湘  阅读(88)  评论(1)    收藏  举报

导航