0

前几天我在浏览 Android 中的一个应用程序时发现了一个惊人的列表。

自定义列表

我发现自定义很ListView有趣。当我们单击文本时,它会显示一些Activity,当我们单击右侧的箭头时,它会显示一个对话框。

我想学这个。任何人都可以通过一些解释此自定义列表的教程。请朋友。指导我..非常感谢

4

1 回答 1

4

嗨,下面是自定义 ListView 示例

首先创建 test.Java 文件下面是代码

package com.test;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class test extends Activity {
    /** Called when the activity is first created. */
    ArrayList<String> arrayString = new ArrayList<String>();
    test_adapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        arrayString.add("TextView1");
        arrayString.add("TextView2");
        arrayString.add("TextView3");
        arrayString.add("TextView4");
        arrayString.add("TextView5");
        ListView list = (ListView) findViewById(R.id.LIST);
        adapter = new test_adapter(this, arrayString);
        list.setAdapter(adapter);
    }

}

也用在类文件 test_adapter.java 下面

package com.test;

import java.util.ArrayList;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class test_adapter extends BaseAdapter {
    private Activity activity;
    ArrayList<String> data = new ArrayList<String>();
    private static LayoutInflater inflater = null;

    public test_adapter(Activity a, ArrayList<String> d) {
        activity = a;
        data = d;
        inflater = LayoutInflater.from(activity);
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder {
        public TextView txt1;
        public Button btn1;
        public RelativeLayout rel1;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        final ViewHolder holder;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.listview, null);
            holder = new ViewHolder();
            holder.txt1 = (TextView) vi.findViewById(R.id.txt1);
            holder.btn1 = (Button) vi.findViewById(R.id.btn1);
            holder.rel1 = (RelativeLayout) vi.findViewById(R.id.rel1);
            vi.setTag(holder);
        } else
            holder = (ViewHolder) vi.getTag();

        holder.txt1.setText(data.get(position));
        holder.rel1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast
                        .makeText(activity, "Click On TextView",
                                Toast.LENGTH_LONG).show();
            }
        });
        holder.btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(activity, "Click On Button", Toast.LENGTH_LONG)
                        .show();
            }
        });
        return vi;
    }

}

下面使用布局文件 main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
        <ListView android:layout_width="fill_parent" android:id="@+id/LIST"
    android:layout_height="fill_parent" />
    </LinearLayout>

使用 listview.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="horizontal">
    <RelativeLayout android:id="@+id/rel1" android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/txt1"
        android:text="Test Description"></TextView>
</RelativeLayout>
    <RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <Button android:id="@+id/btn1" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="ClickHere"
        android:layout_alignParentRight="true"></Button>
            </RelativeLayout>
    </LinearLayout>

使用上述代码,您将收到显示 toast 消息,您可以根据需要进行更改。

于 2011-05-12T14:17:08.427 回答