Android使用intent

时间:2017-01-10 09:47:44

标签: android android-intent android-edittext

我想使用ListDetail编辑我的数据库记录。目前我的项目显示按日排序的练习列表。当您单击列表位置时,您将获得包含练习详细信息的新窗口。有2个按钮:编辑和删除。删除按钮使用意图很好,但我不知道如何轻松地使EDIT按钮工作。我该怎么做才能解决这个问题?

以下是我的课程:

ListExerciseFragment - 显示listView

的片段
public class ListExercisesFragment extends Fragment {
    String TAG="ListExercisesFragment";
    private ExercisesDbAdapter dbHelper;
    private ListView listView;
    private ArrayList<Exercise> lExercise=new ArrayList<Exercise>();
    private CustomListAdapter dataAdapter;
    private static  final int REQUEST_CODE=100;
    public ListExercisesFragment(){
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.list_fragment, container, false);
        listView = (ListView) view.findViewById(R.id.listView1);
        dbHelper = new ExercisesDbAdapter(getActivity());
        dbHelper.open();

        displayListView();

       listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
               public void onItemClick(AdapterView<?> parent,View view,int position,long id){
                   Exercise exercise=(Exercise) listView.getItemAtPosition(position);
                   //wysyłam dane do ListDetail
                   Intent intent = new Intent(getContext(),ListDetail.class);
                   intent.putExtra("id",exercise.getId());
                   intent.putExtra("name",exercise.getName());
                   intent.putExtra("series",exercise.getSeries());
                   intent.putExtra("reps",exercise.getReps());
                   intent.putExtra("weights",exercise.getWeights());
                   intent.putExtra("notes",exercise.getNotes());
                   intent.putExtra("date",exercise.getDate());
                   startActivityForResult(intent,REQUEST_CODE);
               }
       });

        return view;
    }

    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data){
        if(requestCode==REQUEST_CODE){
            int id=data.getIntExtra("id",-1);
            if(id!=-1){
                Log.d(TAG,"success"+Integer.toString(id));
                deleteExerciseWithID(id);
            }
            else{
                Log.d(TAG,"not working");
            }
        }
        super.onActivityResult(requestCode,resultCode,data);
    }


    private void deleteExerciseWithID(int id){
        for(Exercise e:lExercise){
            if( e.getId()==id ){
                dbHelper.deleteRowWithId(id);
                lExercise.remove(e);
                dataAdapter.notifyDataSetChanged();
                break;
            }
        }
    }
    private void displayListView() {
        Cursor cursor = dbHelper.fetchAllExercises();

        cursor.moveToFirst();
        while (cursor.moveToNext()) {
            int _id = cursor.getColumnIndex(ExercisesDbAdapter.KEY_ROWID);
            int name = cursor.getColumnIndex(ExercisesDbAdapter.KEY_NAME);
            int series = cursor.getColumnIndex(ExercisesDbAdapter.KEY_SERIES);
            int reps = cursor.getColumnIndex(ExercisesDbAdapter.KEY_REPS);
            int weights = cursor.getColumnIndex(ExercisesDbAdapter.KEY_WEIGHTS);
            int notes = cursor.getColumnIndex(ExercisesDbAdapter.KEY_NOTES);
            int date = cursor.getColumnIndex(ExercisesDbAdapter.KEY_DATE);

            Exercise exercise = new Exercise();
            exercise.setId(cursor.getInt(_id));
            exercise.setName(cursor.getString(name));
            exercise.setSeries(cursor.getInt(series));
            exercise.setReps(cursor.getInt(reps));
            exercise.setWeights(cursor.getInt(weights));
            exercise.setNotes(cursor.getString(notes));
            exercise.setDate(cursor.getString(date));


            lExercise.add(exercise);
        }

        Collections.sort(lExercise);


        dataAdapter = new CustomListAdapter(getActivity(),0, lExercise);
        // Assign adapter to ListView
        listView.setAdapter(dataAdapter);


    }

}

ListDeatil - 有意图的类,目前显示练习的详细信息,点击删除该练习的删除按钮

public class ListDetail extends AppCompatActivity {
String TAG="ListDetails";

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

    final int id=getIntent().getIntExtra("id",-1);
    String name=getIntent().getStringExtra("name");
    int series=getIntent().getIntExtra("series",-1);
    int reps=getIntent().getIntExtra("reps",-1);
    int weights=getIntent().getIntExtra("weights",-1);
    String date=getIntent().getStringExtra("date");
    String notes=getIntent().getStringExtra("notes");

    TextView txtName=(TextView) findViewById(R.id.detail_name);
    TextView txtSeries=(TextView) findViewById(R.id.detail_series);
    TextView txtReps=(TextView) findViewById(R.id.detail_reps);
    TextView txtWeights=(TextView) findViewById(R.id.detail_weights);
    TextView txtNotes=(TextView) findViewById(R.id.detail_notes);
    TextView txtDate=(TextView) findViewById(R.id.detail_date);



    txtName.setText(name);
    txtDate.setText(date);
    txtSeries.setText(Integer.toString(series));
    txtReps.setText(Integer.toString(reps));
    txtWeights.setText(Integer.toString(weights));
    txtNotes.setText(notes);

    Log.d(TAG,"Got id: "+Integer.toString(id));

    Button btnDelete=(Button) findViewById(R.id.btn_delete);
    btnDelete.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent intent=new Intent();
            intent.putExtra("id",id);
            setResult(RESULT_OK,intent);
            finish();
        }
    });

}
@Override
public void onBackPressed() {

    Intent intent=new Intent();
    setResult(RESULT_OK,intent);
    finish();

}
}

目前的视图如下所示: ListDetail view screenshot

我正在考虑创建EditTexts,默认情况下使它们为GONE,当你点击按钮编辑时,TextViews从ListDetails类GONE,EditTexts的可见性是可见的,来自TextViews的信息,然后你就可以编辑它。我不知道如何写这个说实话。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

我用两个活动创建了Demo,一个是MainActivity.class,它是启动器活动,第二个是SecondActivity.class,这是第二个活动。请仔细阅读这两个活动,你会得到这个想法:

MainActivity.class

@覆盖     protected void onCreate(Bundle savedInstanceState){         super.onCreate(savedInstanceState);         的setContentView(R.layout.activity_main);         Intent iv = new Intent(MainActivity.this,SecondActivity.class);         startActivityForResult(IV,1);     }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (resultCode){
        case 1:
            Log.d("Edit","Edit");
            break;
        case 2:
            Log.d("Delete","Delete");
            break;
    }
}

SecondActivity.class

bt_edit =(按钮)findViewById(R.id.bt_edit);         bt_delete =(按钮)findViewById(R.id.bt_delete);

    bt_edit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setResult(1);
            finish();

        }
    });


    bt_delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setResult(2);
            finish();
        }
    });

单击编辑后请检查日志,它将转到onActivityResult的EditPart,如果单击删除它将重定向到删除部分OnActivityResult。希望这会帮助你。