![](/img/trans.png)
[英]How to code for the list view in android studio instead of text view
[英]How to display text for an item in a list view Android Studio
我很難解決這個問題。 我要做的是根據從列表視圖中單擊的項目顯示不同的描述。 假設我選擇列表中的第三個食譜。 它應該切換到另一個活動,並僅顯示該配方的描述,而不顯示任何其他配方。 我在字符串文件夾中有描述。
在我的代碼中,它具有偵聽器和打開其他活動的意圖。 當我運行該應用程序時,一旦單擊列表中的項目,它就會關閉。 以前,我沒有使用偵聽器,而是使用了一個方法,並且在xml中具有onClick的textview和image視圖。 這將切換活動,但不會顯示任何描述。
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
不會崩潰並切換,但是沒有顯示描述。
為什么不讓writeDesc方法返回描述的STRING而不是整數。 在我看來,您只是在返回int值...
既然您已經找到了困難的部分,即使用ItemClickListener
,我相信您只需要一些指導,所以就在這里。
根據位置,在intent.putExtra
放入不同的文本
例如,而不是i.putExtra("recipe_desc", position);
使用此i.putExtra("key","recipe_desc");
現在由您決定如何執行此操作。 作為快速建議,我有2種口味。Flavor1:創建一個映射器類,該映射recipe_desc
以正確的描述映射recipe_desc
。 例如,如果您在recipe_desc
收到“雞肉”,則此映射器類包含映射到它的雞肉recipe_desc
。 在activitB
,只需使用switch-case
獲得正確的值
Flavor2:不是在activityB中使用mapper類, intent.extra
根據位置將描述直接放入您的intent.extra
。 現在只顯示您從意圖中得到的一切。 因此,在flavor2中,您的switch-case
轉移到了activityA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.