【发布时间】:2016-06-18 18:52:52
【问题描述】:
我很难弄清楚这一点。我想要做的是根据我从列表视图中单击的项目显示不同的描述。假设我选择了列表中的第三个食谱。它应该切换到另一个活动并仅显示该配方的描述,而不显示任何其他配方。我在字符串文件夹中有描述。
在我的代码中,它有一个监听器和一个打开其他活动的意图。当我运行应用程序时,一旦我单击列表中的项目,它就会关闭。之前,我没有使用侦听器,而是使用方法并在 xml 中为 textview 和 image view 设置了 onClick。这将切换活动,但不会显示任何描述。
public class MainActivity extends AppCompatActivity {
private RecipesDataSource ds;
private ListView recipesListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ds = new RecipesDataSource();
recipesListView = (ListView)findViewById(R.id.listView1);
recipesListView.setAdapter(new RecipesDataSourceAdapter(this,ds));
recipesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(MainActivity.this, RecipesInfoActivity.class);
i.putExtra("recipe_desc", position);
startActivity(i);
}
});
}
}
这是我希望显示描述的第二个活动。它有一个用于保存文本的文本视图。
public class RecipesInfoActivity extends AppCompatActivity {
TextView recipeInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipes_info);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
recipeInfo = (TextView)findViewById(R.id.recipeInfoTextView);
Intent i = getIntent();
String pos = i.getStringExtra("recipe_desc");
recipeInfo.setText(writeDesc(pos));
}
public int writeDesc(String pos)
{
int position = Integer.parseInt(pos);
int desc = 0;
if(position==0)
{
desc = R.string.description1;
}
else if(position==1)
{
desc = R.string.description2;
}
else if(position==2)
{
desc = R.string.description3;
}
else if(position==3)
{
desc = R.string.description4;
}
else if(position==4)
{
desc = R.string.description5;
}
else if(position==5)
{
desc = R.string.description6;
}
else if(position==6)
{
desc = R.string.description7;
}
return desc;
}
}
方法writeDesc() 根据putExtra() 从MainActivity 传递的位置返回描述。变量是整数,因为我将 ArrayList 与整数一起使用。
由于我是 Android Studio 新手,请不要给我复杂的代码。如果您有解决方案,请尽可能简单。
我需要帮助的总结:
-根据从列表视图中单击的项目,为第二个活动编写描述。例如:如果我点击鸡肉的食谱,它会显示鸡肉的食谱(我将这些描述作为字符串,所以你不必担心。)
-我应该使用侦听器还是在从列表视图中单击项目时调用的单独方法(在 xml 中使用 android:onClick="whatevermethodnamehere" 而不是它现在在带有侦听器的主要活动中的方式)。监听器由于某种原因没有切换到下一个活动并崩溃,但onClick 没有崩溃并切换,但没有显示任何描述。
【问题讨论】: