当前位置: 代码迷 >> Android >> Android ListView的有关问题
  详细解决方案

Android ListView的有关问题

热度:88   发布时间:2016-04-28 03:16:35.0
Android ListView的问题。
我想在一个*.xml文件里面实现位每次都动态增加数据。用ListView。其中用SimpleAdapter来实现。不过运行效果是这的。



我的xml文件是这样定义的。为什么会这样呢?该怎么改?
[code=html]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="添加联系人" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除联系人" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="姓名" />
        <TextView
            android:id="@+id/addr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="地址" />

        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="电话号码" />
    </LinearLayout>
    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>
</LinearLayout>
[/code]

改怎么改才可以啊。
------解决思路----------------------
上下item布局和java代码
------解决思路----------------------
你把item里的button删掉,放在listview的页面啊
------解决思路----------------------
你在代码里把那两个button也放在listview里面了,你把SimpleAdapter的代码贴出来看看!
------解决思路----------------------

import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
private MyAdapter adapter;
private int count = 0;//测试用变量

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ListView listview = (ListView) findViewById(R.id.listview);
adapter = new MyAdapter(this);
listview.setAdapter(adapter);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.addUser(new User("user" + count, "addr" + count, "1311111111" + count));
count++;
}
});

}

class MyAdapter extends BaseAdapter{
//存储数据的list
private ArrayList<User> mList = new ArrayList<User>();
private Context mContext;

public MyAdapter(Context context){
mContext = context;
}
//添加user
public void addUser(User user){
mList.add(user);
notifyDataSetChanged();//这句很重要,有了它,就可以刷新加入user后的ui了
}
//BaseAdapter的抽象方法需要实现
public int getCount() {
return mList.size();
}
//BaseAdapter的抽象方法需要实现
public Object getItem(int position) {
return mList.get(position);
}
//BaseAdapter的抽象方法需要实现
public long getItemId(int position) {
return position;
}
//BaseAdapter的抽象方法需要实现,显示的每条都是由这个方法得到的
public View getView(int position, View convertView, ViewGroup parent) {
User user = mList.get(position);
//可以用holder进行优化,具体可以网上百度一下
View view= LayoutInflater.from(mContext).inflate(R.layout.item, null);
TextView name = (TextView) view.findViewById(R.id.item_name);
TextView addr = (TextView) view.findViewById(R.id.item_addr);
TextView phone = (TextView) view.findViewById(R.id.item_phone);

name.setText(user.getName());
addr.setText(user.getAddr());
phone.setText(user.getPhone());

return view;
}
}

class User{
private String name;
private String addr;
private String phone;

public User(String name, String addr, String phone){
this.name = name;
this.addr = addr;
this.phone = phone;
}
public String getName() {
return name;
}
public String getAddr() {
return addr;
}
public String getPhone() {
return phone;
}
}

}


  相关解决方案