无法查看设置LISTVIEW的元素

时间:2015-08-16 17:23:01

标签: android listview simplecursoradapter listactivity

列出了' 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中的项目,将它们绑定到比较运算符。对于exp:如果price == 0,则textview.setvisible = false ...

我尝试使用LayoutInflater,但是他使视图元素与listview中的元素不同。 我尝试适配器绑定类 - 但我认为它没有好处。 大多数情况下我都有错误 - 不能为&#34; null元素执行此操作&#34; ...那种情况 - 看起来就像我以前所做的那样 - 我的程序无法在list_row中找到ViewById元素。

有一个联系点

     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);

请帮助我Obi-Van Kenobi,抱歉我的虚拟ENG,我不确定我是否以正确的方式过鳕鱼)))

1 个答案:

答案 0 :(得分: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 bla bla ----------------- 这个观点比不上好 同样simpleCursorAdapter也无法解决您的目的,因为您希望隐藏并根据相应视图中的数据显示视图 所以我的第一个建议将您的布局更改为linearLayouttableLayout或其他布局,然后在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, };

//这里没有任何项目,但你还写了#34;,&#34;在R.id.list_sum之后,这就像&#34; R.id.list_sum,&#34;

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