データベースからデータを取得する主なアクティビティのリストビューがあります。ListViewアイテムをアクティビティ間で渡す
問題は、ユーザーがリストで選択した内容に基づいて次のアクティビティにテキストを渡すことです。
私はリストビューを取得して次のアクティビティを開き、次のアクティビティに奇妙な文字列を送信しますが、正しい情報は送信されません。ここに私のコードは次のとおりです。
MAINアクティビティコード:
package com.example.chris.gymtracker;
import android.content.Intent;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class Days extends AppCompatActivity {
dbAddDays dbAddDays;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_days);
dbAddDays = new dbAddDays(this);
final ListView daysListView = (ListView) findViewById(R.id.daysListView);
String[] fromFieldNames = new String[]{dbAddDays.ADDDAYS_KEY_DAYS};
Button addDaysButton = (Button) findViewById(R.id.addDaysButton);
Button refreshButton = (Button)findViewById(R.id.refreshButton);
addDaysButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent startAddDaysActivity = new Intent(Days.this, addDays.class);
startActivity(startAddDaysActivity);
}
});
refreshButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
populateDaysListView();
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, fromFieldNames);
daysListView.setAdapter(adapter);
daysListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id){
Intent myIntent = new Intent(view.getContext(),selectWorkout.class);
String s = daysListView.getItemAtPosition(position).toString();
myIntent.putExtra("itemSelected",s);
startActivityForResult(myIntent,position);
}
});
}
public void populateDaysListView() {
Cursor cursor = dbAddDays.getDaysData();
String[] fromFieldNames = new String[]{dbAddDays.ADDDAYS_KEY_DAYS};
int[] toViewIDs = new int[]{R.id.addDaysDaysTextView};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.activity_add_day_text_view, cursor, fromFieldNames, toViewIDs, 0);
ListView myList = (ListView) findViewById(R.id.daysListView);
myList.setAdapter(myCursorAdapter);
}
}
第2の活性CODE:
package com.example.chris.tracker;
import android.content.Intent;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class selectWork extends AppCompatActivity {
dbAddDays dbAddDays;
Days Days;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_work);
Intent intentExtras = getIntent();
//Bundle bun = intentExtras.getExtras();
String s = intentExtras.getStringExtra("itemSelected");
TextView textView = (TextView)findViewById(R.id.textView3);
textView.setText(s);
dbAddDays = new dbAddDays(this);
populateWorkoutGridView();
}
public void populateWorkGridView() {
Cursor cursor = dbAddDays.getWorkoutData();
String[] fromFieldNames = new String[]{dbAddDays.ADDDAYS_KEY_WORKOUT};
int[] toViewIDs = new int[]{R.id.workoutWorkoutTextView};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.activity_workout_text_view, cursor, fromFieldNames, toViewIDs, 0);
GridView myGrid = (GridView) findViewById(R.id.workoutGridView);
myGrid.setAdapter(myCursorAdapter);
}
}
問題:
But that bold Android. ... text view should show the text of the item clicked.
同じリストビューに2つの異なるアダプタがあります。私はあなたがCursorAdapterに固執することをお勧めします –