如何使用自定义布局使用字符串填充ListView

时间:2015-04-02 06:47:27

标签: java android listview android-listview

我有ListView和3个字符串的自定义布局。 如何使用布局将项目添加到ListView

R.id.Tag1 takes value of String1;
R.id.Tag2 takes value of String2;
R.id.Tag3 takes value of String3;

而不是Item1 from ListView = the objects Tag1,Tag2,Tag3

我该怎么做?我知道如何使用Context SimpleContextAdapter使用{{1}},但我不知道只有字符串。

1 个答案:

答案 0 :(得分:0)

像这样制作自定义适配器,

import java.util.ArrayList;
import java.util.HashMap;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

//Custom view for cityList

public class CustomItemsList extends BaseAdapter 
{
    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private LayoutInflater inflater=null;
    Context ctx;

    public CustomItemsList(Activity a, ArrayList<HashMap<String, String>> d) 
    {
        ctx = a.getBaseContext();
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       
    }

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

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

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


    @SuppressLint("InflateParams")
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View vi=convertView;

        if(convertView==null)
            vi = inflater.inflate(R.layout.custom_items_list, null);

        TextView title = (TextView)vi.findViewById(R.id.more_item);
        TextView price = (TextView) vi.findViewById(R.id.itemPrice);

        HashMap<String, String> category = new HashMap<String, String>();
        category = data.get(position);

        title.setText(category.get("itemName"));
        price.setText(category.get("itemPrice"));
        String itemId = category.get("itemId");

        return vi;
    }
} 

这是布局custom_items_list。您可以相应地更改布局。我只是发布我当前的布局。

<?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="wrap_content"
android:background="#FFFFFF"
android:orientation="vertical" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="@dimen/headerHeight1"
    android:gravity="center"
    android:padding="5dp" >

    <TextView
        android:id="@+id/more_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="@dimen/viewSpace1"
        android:textColor="#000000"
        android:textSize="@dimen/titlebar_textSize"
        tools:ignore="HardcodedText" />

    <TextView
        android:textSize="@dimen/titlebar_textSize"
        android:textColor="#000000"
        android:id="@+id/itemPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

<View 
    android:layout_height="0.5dip"
    android:background="#000000"
    android:layout_width="fill_parent"
    android:layout_marginLeft="@dimen/viewSpace3"
    android:layout_marginRight="@dimen/viewSpace3"/>

</LinearLayout>

在您的主要活动中,

ArrayList<HashMap<String, String>> detailss = new ArrayList<HashMap<String, String>>();
ItemList=(ListView) findViewById(R.id.listViewItems);

HashMap<String, String> map = new HashMap<String, String>();

    map.put("itemId", "1");
    map.put("itemName", "Name");
    map.put("itemPrice", "120");

    detailss.add(map);

    adapter = new CustomItemsList(this, detailss);
    ItemList.setAdapter(adapter);