BaseAdapter.Как?У меня есть mupltie ListViews в одном LinearLayout - PullRequest
0 голосов
/ 18 марта 2011

У меня есть простой файл макета, который отображает значки и текстовое представление, а затем ListView, который заполняется некоторыми строковыми данными.

Я использую ArrayAdapter, чтобы заполнить ListView, используя android.R.layout.simple_list_item_multiple_choice, но это дает мне флажки android. Здесь я хотел бы использовать свои собственные изображения флажков (чек и маркеры, как показано на изображении).

Я пытался использовать пример BaseAdapter из примера ApiDemos Lists14.java, но я все еще пытаюсь получить изображения или текст.

Есть идеи, как переопределить метод getView?

My Layout xml

* * 1010

и мой код

package com.example;


import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class Main extends Activity {

ImageView home_icon, mail_icon, baby_icon, camera_icon, settings_icon;
ListView list1, list2, list3;
LayoutInflater inflater;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    home_icon = (ImageView) findViewById(R.id.imageView111);
    mail_icon = (ImageView) findViewById(R.id.imageView121);
    baby_icon = (ImageView) findViewById(R.id.imageView131);
    camera_icon = (ImageView) findViewById(R.id.imageView141);
    settings_icon = (ImageView) findViewById(R.id.imageView151);

    home_icon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            System.out.println("Clicked here");
        }
    });

    mail_icon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            System.out.println("Clicked here");
        }
    });

    baby_icon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            System.out.println("Clicked here");
        }
    });

    camera_icon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            System.out.println("Clicked here"+arg0.isClickable());
        }
    });

    settings_icon.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            System.out.println("Clicked here");
        }
    });


    list1 = (ListView) findViewById(R.id.list1);
    list2 = (ListView) findViewById(R.id.list2);
    list3 = (ListView) findViewById(R.id.list3);

    ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, sCheeseStrings2);
    list1.setAdapter(adapter);
    list1.setOnItemClickListener(itemClickListener);
    list1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

    ListAdapter adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, sCheeseStrings1);
    list2.setAdapter(adapter1);
    list2.setOnItemClickListener(itemClickListener);
    list2.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

    ListAdapter adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, sCheeseStrings);
    list3.setAdapter(adapter2);
    list3.setOnItemClickListener(itemClickListener);
    list1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    list1.setItemsCanFocus(false);

}

private int responseIndex = 0;

private final OnItemClickListener itemClickListener = new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String[] responses = sCheeseStrings;
        String response = responses[responseIndex++ % responses.length];

        String message = getResources().getString(R.string.split_touch_view_cheese_toast,
                Cheeses.sCheeseStrings[position], response);

        Toast toast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
        toast.show();
    }
};

static final String[] sCheeseStrings = {"Hushallsost", "Iberico", "Idaho Goatster",
    "Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu", "Isle of Mull", "Jarlsberg",
    "Jermi Tortes", "Jibneh Arabieh", "Jindi Brie", "Jubilee Blue", "Juustoleipa",
    "Kadchgall", "Kaseri", "Kashta", "Kefalotyri"
    };
static final String[] sCheeseStrings1 = {"Cabecou", "Caboc", "Cabrales", "Cachaille", "Caciocavallo", "Caciotta",
    "Caerphilly", "Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
    "Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux", "Capricorn Goat",
    "Capriole Banon", "Carre de l'Est", "Casciotta di Urbino", "Cashel Blue", "Castellano"
    };
static final String[] sCheeseStrings2 = {"Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
    "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale",
    "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese",
    "Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell"
    };

}

Что у меня есть и Что я хочу

Ценю вашу помощь. Спасибо.

1 Ответ

2 голосов
/ 18 марта 2011

Создайте пользовательский адаптер и используйте следующий код ..

Main.xml

<TextView android:background="@drawable/header_textbg" android:textSize="15sp"  android:paddingTop="2dip"
    android:paddingLeft="12dip" android:textColor="@color/white" android:id="@+id/list_label"
    android:layout_width="fill_parent" android:layout_height="30dip" android:layout_marginTop="5dip"
    android:text="Credit Cards" style="?android:attr/listSeparatorTextViewStyle" />

<ListView android:id="@+id/usercards" android:listSelector="@drawable/list1" 
    android:cacheColorHint="#00000000" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" />        

list.xml

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
  android:layout_height="wrap_content">
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" android:layout_width="fill_parent"
      android:layout_height="fill_parent" android:layout_marginLeft="10dip"       android:id="@+id/lay_txt">
     <TextView android:id="@+id/credit_card_listtext" android:textSize="15sp"
          android:textColor="@color/black"
          android:layout_width="wrap_content" android:layout_height="20dip"
          android:ellipsize="end" android:layout_marginTop="15dip" android:text="Card  No" />
      <RadioButton android:id="@+id/select_card" android:layout_width="wrap_content" 
                   android:layout_height="wrap_content"     android:layout_alignParentRight="true"
                 android:focusable="false"/>
</RelativeLayout>

YourActivity.java

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.main);
    credit_card_list = (ListView) findViewById(R.id.usercards);
    //Create a custom Adapter here and set adapter here..
    }

getView вашего пользовательского адаптера должен выглядеть так:

        public View getView(final int position, View convertView, ViewGroup arg2) {

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list,
                    null);
            holder = new ViewHolder();
            holder.text = (TextView) convertView
                    .findViewById(R.id.credit_card_listtext);
            holder.rb = (RadioButton) convertView
                    .findViewById(R.id.select_card);
            convertView.setTag(holder);
        } else {
            holder.text = (TextView) convertView
                    .findViewById(R.id.credit_card_listtext);
            holder.rb = (RadioButton) convertView
                    .findViewById(R.id.select_card);
        }
        holder.text.setText("Array[position]");

       // this is for selecting only one value from all list in Radio button

       holder.rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                // TODO Auto-generated method stub
                holder.rb.clearAnimation();
            }
        });

        credit_card_list
                .setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    public void onItemClick(AdapterView<?> list, View v,
                            int pos, long id) {
                        //for list click
                                              //some code
                    }
                });
        return convertView;
    }

Он включает в себя один просмотр текста и одну кнопку-переключатель, которую вы хотите добавить.

Для радиокнопок управления отметьте это и это

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