Добавление ImageView в ListView - PullRequest
       19

Добавление ImageView в ListView

1 голос
/ 15 декабря 2011

У меня есть класс, который расширяет Activity и раздувает другой макет xml в основном макете.

Пример:

public class PrivateHistory extends Activity{

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    //Remove title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    //Remove notification bar
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.main_layout);  

    viewBundleMessage();

    LinearLayout item = (LinearLayout)findViewById(R.id.menu_linear_layout);
    View child = getLayoutInflater().inflate(R.layout.menu_list, null);
    item.addView(child);

    getHistoryInfo();

    }
}

Пример (макет списка меню):

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

<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listViewMenu">

</ListView>

И есть метод getHistoryInfo, который я использую для извлечения некоторой исторической информации из БД, чтобы я мог поместить каждую запись в ListItem.

Пример:

public void getHistoryInfo(){

//removed historyItem + database information

    ListView lv = (ListView) findViewById(R.id.listViewMenu);
    lv.setAdapter(new ArrayAdapter<String>(this,R.layout.history_list_view, historyItem));

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

            showToast(historyItem.get(position).toString());
        }
    });

}

Пример (history_list_view):

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/noteText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:background="@drawable/bg_white_grey"
android:gravity="center_vertical"
android:typeface="serif"
android:layout_marginBottom="10dp"/>

Так что все здесь работает, но только если вы хотите добавить текст в каждый ListItem. Я хотел бы добавить изображения для каждого ListItems, но как? Если бы этот класс расширил ListActivity, это было бы не так сложно, но он расширяет Activity. Так может кто-нибудь помочь мне здесь?

Для тех, кто хотел бы использовать мое приложение, перейдите по ссылке: http://www.4shared.com/android/tWfbNqZ6/Free_Wallet.html

Ответы [ 4 ]

1 голос
/ 15 декабря 2011

Чтобы иметь настроенные строки для списка (т. Е. Что-либо, кроме текстового представления), вы должны создать свой собственный адаптер -применение. Вот еще один ответ (мной), объясняющий общий принцип:
Два представления в каждом элементе списка (пример касается двух текстовых представлений, а не изображения, но просто замените макет двумя текстовыми представлениями для макета с изображением и измените соответствующие строки в методе getView ())

0 голосов
/ 15 декабря 2011

Если вы хотите, чтобы изображение зависело от historyItem, вы должны использовать собственную реализацию адаптера, как описано Jave.

Однако, если вы просто хотите использовать маркер или подобное в элементе списка, вы можете изменить history_list_view на более сложный макет, включающий различные объекты Layout, ImageViews и TextView, что является обязательным при использовании ArrayAdapter. С расширенным history_list_view вы можете использовать ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects), который вы будете вызывать с

lv.setAdapter(new ArrayAdapter<String>(this,R.layout.history_list_view,
    R.id.noteText, historyItem));
0 голосов
/ 15 декабря 2011

Вы должны написать собственный адаптер для представления списка. Сделайте одно, прочитайте что-нибудь о BASE ADAPTER.

Вот ссылка

0 голосов
/ 15 декабря 2011

Вы можете определить пользовательский BaseAdapter, где в методе getView() вы можете надувать свой пользовательский вид для элемента списка.Для получения дополнительной информации вы можете проверить здесь: http://developer.android.com/reference/android/widget/BaseAdapter.html или здесь: http://thinkandroid.wordpress.com/2010/01/13/custom-baseadapters/

Надеюсь, что это помогает сейчас!Если у вас есть какие-либо конкретные проблемы, пожалуйста, снимайте!

...