我已经阅读了stackoverflow上的前一个线程如何从当前选定的列表项中提取文本。我使用了getSelectedItem方法,但这不起作用。我想要做的是从列表元素中获取文本,然后在滑动手势上将此文本传递到另一个活动。这是我的滑动手势代码。
public class Descriptor extends ListActivity {
private GestureDetector gestureDetector;
@SuppressWarnings("deprecation")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.descriptor);
gestureDetector = new GestureDetector(new SwipeGestureDetector());
ListView listView = (ListView) findViewById(android.R.id.list);
// storing string resources into Array
String[] story_titles = getResources().getStringArray(R.array.story_list);
// Binding resources Array to ListAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,android.R.id.text1,story_titles);
listView.setAdapter(adapter);
//set single choice of list at a time
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
//setting the story description when item clicked from selector class
TextView story_desc = (TextView) findViewById(R.id.story_desc);
ImageView image_desc = (ImageView) findViewById(R.id.imageView1);
Intent i = getIntent();
String title = i.getStringExtra("title");
if(title.equalsIgnoreCase("The Ant and the Grasshopper")){
story_desc.setText(R.string.ant_desc);
image_desc.setImageResource(R.raw.ant_and_grasshopper);
}
if(title.equalsIgnoreCase("The Fox and the Grapes")) {
story_desc.setText(R.string.fox_desc);
image_desc.setImageResource(R.raw.fox);
}
if(title.equalsIgnoreCase("The Wind and the Sun")){
story_desc.setText(R.string.wind_desc);
image_desc.setImageResource(R.raw.wind_and_the_sun);
}
if(title.equalsIgnoreCase("The Miser and his Gold")){
story_desc.setText(R.string.miser_desc);
image_desc.setImageResource(R.raw.miser);
}
if(title.equalsIgnoreCase("The Frog and the Ox")){
story_desc.setText(R.string.frog_desc);
image_desc.setImageResource(R.raw.frog_and_ox);
}
}
public void onListItemClick(ListView parent,View view, int position, long id) {
String title = ((TextView) view).getText().toString();
TextView story_desc = (TextView) findViewById(R.id.story_desc);
ImageView image_desc = (ImageView) findViewById(R.id.imageView1);
if(title.equalsIgnoreCase("The Ant and the Grasshopper")){
story_desc.setText(R.string.ant_desc);
image_desc.setImageResource(R.raw.ant_and_grasshopper);
}
if(title.equalsIgnoreCase("The Fox and the Grapes")) {
story_desc.setText(R.string.fox_desc);
image_desc.setImageResource(R.raw.fox);
}
if(title.equalsIgnoreCase("The Wind and the Sun")){
story_desc.setText(R.string.wind_desc);
image_desc.setImageResource(R.raw.wind_and_the_sun);
}
if(title.equalsIgnoreCase("The Miser and his Gold")){
story_desc.setText(R.string.miser_desc);
image_desc.setImageResource(R.raw.miser);
}
if(title.equalsIgnoreCase("The Frog and the Ox")){
story_desc.setText(R.string.frog_desc);
image_desc.setImageResource(R.raw.frog_and_ox);
}
}
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return super.onTouchEvent(event);
}
private void onLeftSwipe() {
Intent intent = new Intent(this,Story.class);
startActivity(intent);
}
private void onRightSwipe() {
// Do something
}
private class SwipeGestureDetector extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 200;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
try {
float diffAbs = Math.abs(e1.getY() - e2.getY());
float diff = e1.getX() - e2.getX();
if (diffAbs > SWIPE_MAX_OFF_PATH)
return false;
// Left swipe
if (diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Descriptor.this.onLeftSwipe();
// Right swipe
} else if (-diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Descriptor.this.onRightSwipe();
}
} catch (Exception e) {
Log.e("YourActivity", "Error on gestures");
}
return false;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
请注意,如果我省略listview和字符串对象,我的手势可以正常工作,但如果我这样做,则会出现异常。有什么建议吗?