Java 带有自定义项的Android ListView

Java 带有自定义项的Android ListView,java,android,Java,Android,我想用一个自定义项目执行一个ListView。“常规”项是一个具有两个文本视图的全宽图像,另一个图像类似于图标 比如: 实现这一点的最佳方式是什么 谢谢您应该通过扩展BaseAdapter、ArrayAdapter等来声明自己的ListView适配器。在那里,您可以编写自己的getView()方法实现,该方法负责查看ListView中的每个项目 在getView()方法中,您可以使用布局从XML中膨胀视图,并用所需数据填充它。您可以通过创建自己的自定义布局来实现这一点,该布局可以在ListVi

我想用一个自定义项目执行一个
ListView
。“常规”项是一个具有两个文本视图的全宽图像,另一个图像类似于图标

比如:

实现这一点的最佳方式是什么


谢谢

您应该通过扩展
BaseAdapter
ArrayAdapter
等来声明自己的
ListView
适配器。在那里,您可以编写自己的
getView()
方法实现,该方法负责查看
ListView
中的每个项目


getView()
方法中,您可以使用布局从XML中膨胀视图,并用所需数据填充它。

您可以通过创建自己的自定义布局来实现这一点,该布局可以在ListView的getView方法中作为一个项目进行膨胀,并且与@nikis所说的相同的布局也将应用于所有布局

以下是一个简单易懂的示例,可以满足您的需要。:)


给你。。这至少会在某种程度上引导你。我在组中有一张图片,三个文本视图。在您的例子中,有一个图像视图和两个文本视图,这是唯一的区别

我是如何实现它的:

步骤1:在MainActivity中,我制作了一个自定义适配器,它有5个东西,一个Imageview和4个TextView

代码如下:

public class ListViewExample extends Activity {

    ArrayList<String> QuestionForSliderMenu = new ArrayList<String>();

    ArrayList<String> NAME = new ArrayList<String>();
    ArrayList<String> STATE = new ArrayList<String>();
    ArrayList<String> LATITUDE = new ArrayList<String>();
    ArrayList<String> LONGITUDE = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.listview_layout);

        ListView listView = (ListView) findViewById(R.id.customlistView1);

        MyAdapter adapter = new MyAdapter(this, QuestionForSliderMenu);

        listView.setAdapter(adapter);

        try {
            yourjson();
        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    //Just for example. You can do anything to get in your array list.
    public void yourjson() {

        NAME = new ArrayList<String>();
        STATE = new ArrayList<String>();
        LATITUDE = new ArrayList<String>();
        LONGITUDE = new ArrayList<String>();
        try {

            JSONObject json = new JSONObject(loadJSONFromAsset());

            JSONArray array = json.getJSONArray("cities");
            QuestionForSliderMenu = new ArrayList<String>();
            Log.d("Cities: ", array.toString());
            for (int my = 0; my <= array.length(); my++) {

                JSONObject c = array.getJSONObject(my);

                String name = c.getString("name");
                String state = c.getString("state");
                String latitude = c.getString("latitude");
                String longitude = c.getString("longitude");

                  NAME.add(name);
                  STATE.add(state);
                  LATITUDE.add(latitude);
                  LONGITUDE.add(longitude);

            }

        } catch (JSONException e) {

            e.printStackTrace();

        }

    }
最后,两个XML

一:你的ListView布局

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

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

</LinearLayout>

第二:listview的项目

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

    <ImageView
        android:id="@+id/customimageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:id="@+id/Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cities"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/State"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="States"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/Latitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Latitude"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/Longitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Longitude"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

我希望这能帮助你回答你的问题……:)


如果你喜欢我的答案,并认为它很有帮助,请接受它:)

你来这里之前试过搜索吗?这方面肯定有十几个教程,我试过了,但我想怎么做就怎么做。sry请至少包括相关文章的基本内容,这样,如果文章不存在,仍然有答案。至少给他一些基本信息,而不仅仅是给他一个教程链接。我是毕业生,我能够提供帮助:)这个答案有用吗
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

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

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

    <ImageView
        android:id="@+id/customimageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:id="@+id/Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cities"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/State"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="States"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/Latitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Latitude"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/Longitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Longitude"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>