繁体   English   中英

如何在列表视图中显示项目的文本Android Studio

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM