列表中每个项目的左侧和右侧都有文字? (机器人)

时间:2011-08-03 09:25:50

标签: java android xml android-layout android-listview

我首先要说的是我对Android开发的新手。

我的问题是我如何更改以下示例以允许每个列表项左侧和右侧的文本。

我的目标是让每个列表项左侧都有一个项目描述,右边是该描述的数值。

我现在所拥有的是一个列表,显示我希望在每个项目的左侧显示的值。

主java活动(NewtestActivity.java):

public class NewtestActivity extends Activity {
    String[] exampleList = {
        "Item 1",
        "Item 2",
        "Item 3",
        "Test 4",
        "Item 5",
        "Test 6",
        "Item 7",
        "Test 8"
        //etc etc
    };

    @Override  
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);

        // Get an instance of your listview in code
        ListView listview = (ListView) findViewById(R.id.list);

        // Set the listview's adapter       
        listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exampleList));
    }
}

main.xml中:

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

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="280dp"
        android:layout_height="fill_parent"
    >
        <ImageView
            android:src="@drawable/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:layout_marginLeft="5dp"
         />
        <TextView
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_marginTop="14dp"
            android:layout_marginLeft="5dp"
            android:text="@string/app_name"
        />
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
    />

</LinearLayout>

感谢您的帮助(:

3 个答案:

答案 0 :(得分:2)

如果没有与您的问题的直接链接,您可以使用{{1}的LinearLayoutandroid:drawableLeft属性改进您的xml代码和第一个android:drawablePadding(标题) }。

这使您可以将图标放在appName TextView的左侧。

答案 1 :(得分:0)

  1. 扩展ArrayAdapter
  2. 编辑android.R.layout.simple_list_item_1以包含您的布局 想
  3. Check this example

答案 2 :(得分:0)

像这样定义自定义适配器,并根据需要定义自定义布局xml文件。

import java.util.Vector;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class YourAdapter extends BaseAdapter{

    private Context mContext;
    private Vector mValuestobeShown;
    private Vector mValuetext;
        private Vector mValueNumber; 

    public YourAdapter (Context context, Vector text,Vector item, Vector number){
        mContext = context;
                mValuetext = text;
                mValuestobeShown = item;
        mValueNumber = number;
    }

    public int getCount() {
        if(null != mValuestobeShown){
            return mValuestobeShown.size();
        }
        return 0;
    }

    public Object getItem(int position) {
        if(position < mValuestobeShown.size())
            return  mValuestobeShown.get(position);
        else
            return null;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder ;
        if(convertView == null){
            LayoutInflater li =(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = li.inflate(R.layout.your_custom_layout, null);
            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.txt);
                        holder.item = (TextView) convertView.findViewById(R.id.item);
            holder.num = (TextView) convertView.findViewById(R.id.num);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        try{
            holder.item.setText(mValueType.get(position).toString());
            //set other values.....
        }catch(Exception e){  }

        return convertView;
    }

    class ViewHolder {
        TextView text;
                TextView item;
        TextView num;

    }

}