简单ListView 使用

首先要有一个关于ListView的Item各个内容的java文件进行数据的获取及使用。

/*demo.java*/
public class demo {
    String demo;
    public demo(String demo){
        this.demo = demo;
    }

    public String getDemo(){
        return demo;
    }
}

然后对activity_main.xml编写

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.asus.filedemo.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="wrap_content"
            android:id="@+id/edit"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Send"
            android:id="@+id/send"/>
    </LinearLayout>

        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/listview">
        </ListView>


</LinearLayout>

得到这样的一个PREVIEW视图,接着对ListView的Item进行编写,新建一个item.xml

<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/name"/>
</LinearLayout>

只是要一个TextView的视图,那么xml文件已经创建好了,接着对ListView设置适配器
新建一个DemoAdapter并继承自ArrayAdapter,泛型传入我们的demo.class

public class DemoAdapter extends ArrayAdapter<demo> {

    private int resourceId;
    public DemoAdapter(Context context, int resource, List<demo> objects) {
        super(context, resource, objects);
        resourceId = resource;
    }
    public View getView(int position, View convertView, ViewGroup parent){
        demo demo = getItem(position);
        View view = LayoutInflater.from(getContext()).inflate(resourceId, null);

        TextView textView = (TextView) view.findViewById(R.id.name);
        textView.setText(demo.getDemo());
        return view;
    }
}

接着修改MainActivity的代码

public class MainActivity extends AppCompatActivity {

    private EditText editText;
    private List<demo> mlist = new ArrayList<>();
    private DemoAdapter adapter;
    private ListView listView;

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

        editText = (EditText) findViewById(R.id.edit);
        listView = (ListView) findViewById(R.id.listview);//得到ListView的实例
        Button button = (Button) findViewById(R.id.send);
        adapter = new DemoAdapter(MainActivity.this,
                R.layout.item,mlist);//这里传入当前上下文,item的布局文件,列表数据源
        listView.setAdapter(adapter);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add();
                editText.setText("");//对editText的文本清空
            }
        });

    }

    private void add() {
        demo demo = new demo(editText.getText().toString());//得到editText的文本
        mlist.add(demo);//调用ListView的add()方法进行动态添加
        adapter.notifyDataSetChanged();//刷新数据
    }

}

以上就是一个能够动态添加item的简单listView的应用
接着对listView的文档进行动态删除,可以使用OnItemLongClickListener()方法进行操作,调用listView的remove(传入位置) ,接着
再用 adapter.notifyDataSetChanged();进行数据的刷新

PS:现在基本使用RecyclerView来操作列表(一行代码决定ListView GridView)(还可以制作瀑布流)

猜你喜欢

转载自blog.csdn.net/qq_34206863/article/details/73928914