список с текстом слева и справа от каждого элемента? (Android) - PullRequest
1 голос
/ 03 августа 2011

Я хотел бы начать с того, что я совершенно новичок в разработке для 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 ]

2 голосов
/ 03 августа 2011

Без прямой ссылки на ваш вопрос вы можете улучшить свой XML-код и свой первый LinearLayout (заголовок), используя атрибут android:drawableLeft и android:drawablePadding вашего TextView.

Это дает вам возможность разместить значок слева от вашего имени приложения TextView.

0 голосов
/ 03 августа 2011

Определите пользовательский адаптер, как этот, и определите свой XML-файл макета custum в соответствии со своими потребностями.

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;

    }

}
0 голосов
/ 03 августа 2011
  1. Расширить ArrayAdapter
  2. Измените android.R.layout.simple_list_item_1 так, чтобы он содержал нужный вам макет

Проверьте этот пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...