2016-11-19 8 views
0

My ListedActivityが空白で、エラーも例外もスローされません。ただそこに座って、何もしません。List Listオブジェクトが空でない

私のデータベースが空であってはならない、いくつかのエントリがあります。

public class ListedActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list); 

     LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     LinearLayout mContainer = (LinearLayout) inflater.inflate(R.layout.activity_list, null); 
     ListView listView = (ListView) mContainer.findViewById(R.id.listedactivity_list_view); 
     DBHelper dbHelper = new DBHelper(getApplicationContext()); 
     ArrayList<MyLayoutObject> b = dbHelper.getAllResults(); 

     MyAdapter a = new MyAdapter(this, b); 

     listView.setAdapter(a); 

     listView.setOnItemClickListener(
      new AdapterView.OnItemClickListener(){ 
       @Override 
       public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { 
        Intent intent = new Intent(ListedActivity.this, ResultsActivity.class); 
        intent.putExtra("position", position); 
        intent.putExtra("id", id); 
        startActivity(intent); 
       } 
      } 
     ); 
    } 
} 

アクティビティリストには、私のデータベースのすべての結果を書き込む必要があります。ここは.xmlです。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="smart.tuke.sk.makac.ListedActivity"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#eeeeee" 
     android:id="@+id/listedactivity_list_view" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@android:id/empty" 
     android:text="@string/no_data" 
     android:visibility="gone" /> 
</LinearLayout> 

これは私の行レイアウトです。すべての行がこのように表示されます。その.xmlは以下の通りです。

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="61dp" 
     android:orientation="vertical"> 

    <TextView 
     android:id="@+id/date_recorded" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textSize="18sp" 
     android:textStyle="bold" 
     android:textColor="#111111" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/duration_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/distance_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/pace_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/calories_recorded" /> 
    </LinearLayout> 

</LinearLayout> 

MyLayoutObjectはゲッターと5弦、である何よりも

私を助けて、オーバーフローケノービ、あなたが私の唯一の希望です!

編集:アダプターコード

class MyAdapter extends BaseAdapter{ 

    private LayoutInflater inflater; 
    private ArrayList<MyLayoutObject> objects; 

    private class ViewHolder { 
     TextView date; 
     TextView duration; 
     TextView distance; 
     TextView pace; 
     TextView calories; 
    } 

    MyAdapter(Context context, ArrayList<MyLayoutObject> objects) { 
     inflater = LayoutInflater.from(context); 
     this.objects = objects; 
    } 

    public int getCount() { 
     return objects.size(); 
    } 

    public MyLayoutObject getItem(int position) { 
     return objects.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if(convertView == null) { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.row_layout, null); 
      holder.date = (TextView) convertView.findViewById(R.id.date_recorded); 
      holder.distance = (TextView) convertView.findViewById(R.id.distance_recorded); 
      holder.duration = (TextView) convertView.findViewById(R.id.duration_recorded); 
      holder.pace = (TextView) convertView.findViewById(R.id.pace_recorded); 
      holder.calories = (TextView) convertView.findViewById(R.id.calories_recorded); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.date.setText(objects.get(position).getDate()); 
     holder.duration.setText(objects.get(position).getDuration()); 
     holder.distance.setText(objects.get(position).getDistance()); 
     holder.pace.setText(objects.get(position).getPace()); 
     holder.calories.setText(objects.get(position).getCalories()); 
     return convertView; 
    } 
} 

とアダプタの.xmlファイル

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="61dp" 
     android:orientation="vertical"> 

    <TextView 
     android:id="@+id/date_recorded" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textSize="18sp" 
     android:textStyle="bold" 
     android:textColor="#111111" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/duration_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/distance_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/pace_recorded" /> 

     <TextView 
      android:layout_width="345dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/calories_recorded" /> 
    </LinearLayout> 

</LinearLayout> 
+0

はsetContentView後listview.setAdapter(R.layout.activity_list) – Swr7der

+0

をシフトしてみ私はそれらをシフトし、活動はまだ白紙です –

答えて

0

あなたが膨張したカスタムビューにandroid.Rビュー "を見つける" しようとしています。このビューが含まれていません膨らませているレイアウトは、

も(例えばビューは、このようなandroid.R.layout.simple_list_itemとして、事前に定義されたレイアウトの内側に表示されます)あなたの活動のXMLにこの行を考慮:あなたは本当ににIDを割り当てていないandroid:id="@android:id/list"

要素。それは次のようになります:android:id="@+id/listedactivity_list_view"(重要なビットは@ + idです)。

さて、あなたの活動で、これを実行します。このようにそれを行うことでListView listView = (ListView) mContainer.findViewById(R.id.listedactivity_list_view);

を、あなたが実際にあなたのビュー内の実際の要素を参照する代わりに、あなたのレイアウトに存在しないいくつかの「ゴースト要素」を参照しています。

EDITは:より慎重に再読み込み、あなたのコードの後、私は最終的に問題を発見した...これらの行を見てください:(スニペットの)ライン1では

setContentView(R.layout.activity_list); 

LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
LinearLayout mContainer = (LinearLayout) inflater.inflate(R.layout.activity_list, null); 
ListView listView = (ListView) mContainer.findViewById(R.id.listedactivity_list_view); 

、あなたが設定されています特定のレイアウトリソースへのコンテンツビュー。しかし、3行目(mContainer)では、このレイアウトを再び膨張させています。つまり、4行目でfindViewByIdを実行すると、実際に表示されているビューよりも膨らんだビューで何かを探しています。だからあなたの問題を解決がインフレータとmContainer変数を削除することです:

setContentView(R.layout.activity_list); 

ListView listView = (ListView) findViewById(R.id.listedactivity_list_view); 
+0

それは、まだ白紙です私があなたが言いました変更をした後でさえ。 –

+0

アダプタが意図したとおりに動作していますか?私たちにアダプターコードも教えてください。 – Aenadon

+0

アダプターコードは –

関連する問題