2017-01-10 12 views
0

私はListDetailを使用して自分のDBレコードを編集したいと思っています。現在、私のプロジェクトの表示listViewは日ごとに並べ替える演習です。リストの位置をクリックすると、運動の詳細が表示された新しいウィンドウが表示されます。編集と削除の2つのボタンがあります。削除ボタンはインテントを使ってうまく動作していますが、EDITボタンを簡単に操作する方法はわかりません。その問題を解決するにはどうしたらよいですか? - フラグメントの表示のListViewAndroid Edit DBレコードinインテントを使用

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 - 意図を持つクラス、現在、それは運動の詳細が表示され、その運動を削除ボタンをDELETクリックして

ListExerciseFragment:ここ

は私のクラスであります

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

} 
} 

C urrentlyビューは次のようになります。 ListDetail view screenshot

私は約uはListDetailsクラスからTextViews'視認性がGONE、ボタンEDITをクリックすると、EditTextsその後、TextViewsからに関する情報と、表示され、それらはデフォルトでGONE行い、EditTextsを作成して考えていましたあなたはそれを編集することができます。私はそれを正直に書く方法を知らない。助けてくれてありがとう。

答えて

0

これを試してみてください:

は、私は2つの活動でデモを作成している1は、ランチャーの活動であり、第二には、第二activity.Pleaseはあなたのアイデアを得るでしょう、この活性の両方を通過しているSecondActivity.classあるMainActivity.classです:

MainActivity.class

@Override保護ボイドのonCreate(バンドルsavedInstanceState){ super.onCreate(savedInstanceState)。 setContentView(R.layout.activity_main); インテントiv =新しいインテント(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の部分を削除するためにリダイレクトされます削除をクリックするとクリックした後、ログを確認してください。これがあなたを助けることを願っています。

+0

回答ありがとうございますが、私がしたいことはまったくありません。私は同じ活動をしたいと思いますbtn編集クリックして現在の運動に関する情報を編集します。編集ボタンTextViewをクリックすると、EditTextに切り替わり、OKをクリックしてDBレコードを編集した情報で更新することができます。 – Mateusz

関連する問題