0

ArrayList から BaseAdapter を使用して Listview を取得する Android アプリを作成しましたが、Listview には何も表示されませんでした。私のアプリの説明は、BaseAdapter を使用してリストビューを取得することです。私のアプリがエミュレーターで実行されているとき、私のエミュレーターのメニューボタンをクリックしても画面に何も表示されません追加をクリックした後に画面に表示されるボタンのみを追加しますそのアクティビティで新しいアクティビティを起動します2つのeditTextを作成しました。送信後、前のアクティビティに戻り、リストビューを表示します。

誰でもこのエラーを見つけるのを手伝ってくれますか

以下はアダプタークラスです

package com.oj2.exlistview;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class TimeTrackAdapter extends BaseAdapter {

    ArrayList<TimeRecord> times = new ArrayList<TimeRecord>();
    public Context cntxt;
    public TimeTrackAdapter(Context cnt,ArrayList<TimeRecord> list2) {
        super();
        cntxt = cnt;
        times = list2;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return new TimeTracker().getList1().size(); 
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return getItem(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        if (convertView == null){
            System.out.println("in getView");
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.time_list_item, parent,false);
            TimeRecord time = times.get(position);

            TextView timeTextView = (TextView) convertView.findViewById(R.id.timeView);
            timeTextView.setText(time.getTimes());


            TextView noteTextView = (TextView) convertView.findViewById(R.id.noteView);
            noteTextView.setText(time.getNotes());

        }
        return convertView;
    }

}

以下はActivityクラスです

 package com.oj2.exlistview;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.widget.ListView;

    public class TimeTracker extends Activity{
        TimeTrackAdapter timeTrackAdapter;
        ListView listView;
        TimeRecord timerecord;
        public ArrayList<TimeRecord> list1 = new ArrayList<TimeRecord>();

        public static final int TIME_ENTRY_REQUEST_CODE = 1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list);
            System.out.println("in onCreate()");

        }

        public ArrayList<TimeRecord> getList1() {
            return list1;
        }

        public void setList1(ArrayList<TimeRecord> list1) {
            this.list1 = list1;
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            super.onCreateOptionsMenu(menu);
            System.out.println("in onCreateOptionsMenu");
            MenuInflater mI = getMenuInflater();

            mI.inflate(R.menu.time_list_menu,menu);
            return true;
        }
        @Override   
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            // TODO Auto-generated method stub
            System.out.println("in onMenuItemSelected");
            if (item.getItemId()==R.id.add_time_menu_item) {
                Intent intent = new Intent(this, AddTimeActivity.class);
                startActivityForResult(intent, TIME_ENTRY_REQUEST_CODE);

                return true;
            }
            return super.onOptionsItemSelected(item);
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            System.out.println("in onActivityResult");
            if (requestCode==TIME_ENTRY_REQUEST_CODE) {
                if (resultCode==RESULT_OK) {
                    String Time = data.getStringExtra("time");
                    String Note = data.getStringExtra("note");

                    list1.add(new TimeRecord(Time, Note));

                    timeTrackAdapter = new TimeTrackAdapter(this,list1);
                    listView = (ListView) findViewById(R.id.timeListView);
                    listView.setAdapter(timeTrackAdapter);
                    listView.getAdapter();
                    /* timeTrackAdapter.addTimeRecord(new TimeRecord(Time, Note));*/
                    timeTrackAdapter.notifyDataSetChanged();
                }
            }
        }

    }

以下は AddTimeActivity です

 package com.oj2.exlistview;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;

    public class AddTimeActivity extends Activity{

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.add_time);
        }

        public void onCancle(View view) {
            finish();
        }
        public void onSave(View view) {
            Intent intent = getIntent();

            EditText TimeView = (EditText) findViewById(R.id.editText1);
            intent.putExtra("time", TimeView.getText().toString());

            EditText Noteview = (EditText)findViewById(R.id.editText2);
            intent.putExtra("note", Noteview.getText().toString());

            this.setResult(RESULT_OK, intent);
            finish();
        }
    }

ありがとうございます

4

1 に答える 1

1

Activityまず、にオブジェクトを作成しないでくださいAdapter。アクティビティオブジェクトはAndroid自体によって作成され、ビューを表示するために使用されます。アダプターとは何の関係もありません。

データを表示するレイアウトには、属性<ListView ... />を持つタグが含まれている必要があります。android:id="@+id/whatEverId"

次に、そのIDListViewを使用してTimeTrackerアクティビティ内のオブジェクトを取得する必要があります。

ListView lv = (ListView) findViewById(R.id.whatEverId);

次に、アダプターを作成し、表示するビューがカスタムアダプターによって作成されることをListViewに通知します。

TimeTrackerAdapter adapter = new TimeTrackerAdapter(this, myListOfData);
lv.setAdapter(adapter);

myListOfDataArrayList、データを含むものです。残りは明示的であり、仕事をする必要があります。

于 2013-01-15T09:13:37.330 に答える