2015-08-16 5 views
0

есть проблема с 'listView'. Я искал везде, но проблемы не возникает. Поясню:Невозможно получить представление о настройке элементов LISTVIEW

У меня есть классический 'ListView' в моем 'макет':

<?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" 
android:id="@+id/roza" 
android:tileMode="repeat"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#80ffffff" 
    android:alpha="200"> 
</ListView> 

<TextView 
    android:id="@android:id/empty" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/no_todos" /> 

</LinearLayout> 

И я создавать собственные list_row XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="wrap_content"> 


    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Text" 
    android:id="@+id/list_name" 
    android:layout_alignParentTop="true" 
    android:textSize="25dp" 
    android:layout_alignParentStart="true" 
    android:layout_alignEnd="@+id/list_rune" /> 

    ------------bla bla bla ----------------- 
    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Text" 

    android:layout_alignTop="@+id/list_date_update" 
    android:layout_toLeftOf="@+id/list_rune" 
    android:layout_toStartOf="@+id/list_rune" 
    android:id="@+id/textTester" /> 


    </RelativeLayout> 

Мой главный класс -

public class MainActivity extends ListActivity implements   AdapterView.OnItemLongClickListener,  SharedPreferences.OnSharedPreferenceChangeListener { 


    private NordBase dbHelper; 
    private Cursor cursor; 
    int rage = list_row; // my custom row 

    -------------------on create---------------- 
setContentView(R.layout.activity_main); 
this.getListView().setDividerHeight(2); 

     dbHelper = new NordBase(this); 
     fillData(); 

------------------ fillData -----------------

cursor = dbHelper.getAll(); 
     startManagingCursor(cursor); 


     String[] from = new String[] { NordBase.NORD_NAME, NordBase.NORD_DESCRIPTION, 
            NordBase.NORD_PUNKTS, NordBase.NORD_PUNKTS_CROSS, 
      NordBase.NORD_DATE_CREATE, NordBase.NORD_DATE_UPDATE, NordBase.NORD_RUNE, 
      NordBase.NORD_IMPORTANT, NordBase.NORD_SUM }; 

     int[] to = new int[] { R.id.list_name, R.id.list_description, R.id.list_punkts, 
      R.id.list_punkts_cross, R.id.list_date_create, R.id.list_date_update, 
      R.id.list_rune, R.id.list_important, R.id.list_sum, }; 

    notes = new SimpleCursorAdapter(this, 
      rage, cursor, from, to); 


    setListAdapter(notes); 
    getListView().setOnItemLongClickListener(this); 

Увы, я не могу добраться до элементов внутри list_row, чтобы связать их для операторов сравнения. for exp: if price == 0, then textview.setvisible = false ...

Я пробовал LayoutInflater, но он делает элемент вида отличным от тех, что указаны в списке. Я пытаюсь адаптировать класс связующего - но я думаю, что это не хорошо для этого. В основном у меня есть ошибка - не могу сделать это для «нулевого элемента» ... в этом случае - выглядит как все, что я когда-либо делал - моя программа не может найти элементыViewById в list_row.

Существует одна точка контакта

 int[] to = new int[] { R.id.list_name, R.id.list_description, R.id.list_punkts, 
        R.id.list_punkts_cross, R.id.list_date_create, R.id.list_date_update, 
       R.id.list_rune, R.id.list_important, R.id.list_sum, }; 

      notes = new SimpleCursorAdapter(this, 
       rage, cursor, from, to); 

Так мне помочь Оби-Ван Кеноби, и простите за мой манекен ENG, и я не уверен, что я мимо трески в правильном направлении)))

+0

Не могли бы вы уточнить, в чем проблема? – fdsa

+0

Я стараюсь быть настолько конкретным, насколько могу)) Я хочу найти элементы ViewByID в list_row. Как i LEarn Ответ ниже - мне нужно сделать пользовательский класс адаптера, нет способа, которым я могу жить без него))) –

ответ

0

Прежде всего макет не имея мнения, которые у вас есть упоминание в адаптере как

R.id.list_description, R.id.list_punkts, 
        R.id.list_punkts_cross, R.id.list_date_create, R.id.list_date_update, 
       R.id.list_rune, R.id.list_important, R.id.list_sum 

поставить эту вещь в макет list_row XML , если вы имеете в виду ---------- --bla bl a bla ----------------- этот вид, чем ok также simpleCursorAdapter не решит вашу цель, так как вы хотите скрыть и показать представления на основе данных в соответствующих представлениях так мое первое предложение изменить свое расположение к linearLayout или tableLayout или другому макету, как вы чувствуете, а затем сделать это в вашем классе CustomAdapter как

class MyAdapter extends BaseAdapter 
{ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
//here you infalteYour layout and and do your logical thing 
//you can take your data out from cursor and store in the arrayList<YourModelClass> type and have better control 
    } 
} 

иначе в относительном макете просто заполнить данные не скрывают, так что может работать но если вы скрываете некоторые взгляды, шансы высоки, это не решит вашу проблему.

и опечатка ошибка есть я надеюсь, что так как

int[] to = new int[] { R.id.list_name, R.id.list_description, R.id.list_punkts, 
        R.id.list_punkts_cross, R.id.list_date_create, R.id.list_date_update, 
       R.id.list_rune, R.id.list_important, R.id.list_sum, }; 

// здесь нет элемента, но до сих пор у написали «» после того, как R.id.list_sum это как „R.id.list_sum“

  notes = new SimpleCursorAdapter(this, 
       rage, cursor, from, to); 
+0

Итак ((я должен построить пользовательский адаптер. Нет возможности получить представление без него ... Я боюсь об этом (не узнайте об этом) ^^ Спасибо, помощник за ответ ... –

+0

P.S .: Был избыток «,», но код работает нормально - я его удаляю, но все равно, я должен пойти, чтобы узнать о классе MyAdapter extends BaseAdapter. Большое спасибо! –