Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用于填充列表视图的ArrayAdapter是否可以重新用于线性布局?_Android_Listview_Android Linearlayout_Android Arrayadapter - Fatal编程技术网

Android 用于填充列表视图的ArrayAdapter是否可以重新用于线性布局?

Android 用于填充列表视图的ArrayAdapter是否可以重新用于线性布局?,android,listview,android-linearlayout,android-arrayadapter,Android,Listview,Android Linearlayout,Android Arrayadapter,感恩节快乐 因此,我的Android应用程序使用一个自定义ArrayAdapter类,用自定义对象类动态填充ListView页面。是否可以使用相同的ArrayAdapter来填充LinearLayout页面上的字段(TextView、ImageView) 基本上,我的ListView页面是:第1项、第2项、第3项等等 而每一项1、2、3等在点击时都会有自己的单独页面 单击任何项目#时,我希望使用ArrayAdapter发送与ListView页面上显示的信息相同的信息,以便该项目显示在Linear

感恩节快乐

因此,我的Android应用程序使用一个自定义ArrayAdapter类,用自定义对象类动态填充ListView页面。是否可以使用相同的ArrayAdapter来填充LinearLayout页面上的字段(TextView、ImageView)

基本上,我的ListView页面是:第1项、第2项、第3项等等

而每一项1、2、3等在点击时都会有自己的单独页面

单击任何项目#时,我希望使用ArrayAdapter发送与ListView页面上显示的信息相同的信息,以便该项目显示在LinearLayout页面上。这可能吗?或者我必须为单独的页面创建另一个适配器,并传入保存信息的同一个对象吗

对不起,如果这是一个愚蠢的问题,我仍然是一个机器人编程的傻瓜

此外,如果你们有任何教程页面,你可以告诉我正确的方向,这将是非常有帮助的!谢谢大家!

片段代码

public class DealsFragment extends Fragment {

@Override  
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  

    View view = inflater.inflate(R.layout.fragment_show_deals, container, false);
    ListView listView = (ListView)view.findViewById(R.id.dealsListView);

    // Sample set of data passed to adapter for testing purposes
    Deal all_deal_data[] = new Deal[]
            {
                new Deal("Deal 1", R.drawable.test_image, 389, 700, 750, 500),
                new Deal("Deal 2", R.drawable.test_image, 20, 80, 1800, 1500),
                new Deal("Deal 3", R.drawable.test_image, 1932, 2000, 75, 60),
                new Deal("Deal 4", R.drawable.test_image, 198, 450, 450, 350),
                new Deal("Deal 5", R.drawable.test_image, 60, 70, 1500, 1100)
            };

    // Sets up adapter to pass data into XML
    DealAdapter adapter = new DealAdapter(getActivity(), R.layout.listview_item_row, all_deal_data);

    // TO ADD HEADER ROW BACK IN
    // View header = (View)inflater.inflate(R.layout.listview_header_row, null);
    // LV.addHeaderView(header);

    listView.setAdapter(adapter);       

    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(getActivity(), DealPage.class);  
            startActivity(intent);
        }
    });

    return view;
}
公共类DealsFragment扩展片段{
@凌驾
创建视图上的公共视图(布局充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u show\u deals,container,false);
ListView ListView=(ListView)view.findViewById(R.id.dealsListView);
//为测试目的传递给适配器的数据样本集
全部交易交易交易数据[]=新交易[]
{
新交易(“交易1”,R.drawable.test_图像,389700750500),
新交易(“交易2”,R.drawable.test_图像,20,80,1800,1500),
新政(“新政3”,R.drawable.test_图像,19322000,75,60),
新交易(“交易4”,R.drawable.test_图像,198450450350),
新交易(“交易5”,R.drawable.test_图像,60、70、1500、1100)
};
//设置适配器以将数据传递到XML
DealAdapter=新的DealAdapter(getActivity(),R.layout.listview\项目\行,所有\交易\数据);
//将标题行添加回
//视图标题=(视图)充气器。充气(R.layout.listview\u header\u row,null);
//LV.addHeaderView(标题);
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Intent Intent=新的Intent(getActivity(),DealPage.class);
星触觉(意向);
}
});
返回视图;
}

}

我不太明白你想说什么,但据我所知,你点击时需要一个列表,它会转到另一个页面,标题是列表中点击的项目上的文本。在这种情况下,你会想在列表上创建一个侦听器,在点击事件中,你设置一个新的意图,将点击项目的名称放在其中 我建议您从这一系列视频教程中逐步学习:
这就是我通常组织代码的方式

每个活动都有自己的“show()”方法,该方法是静态的(因此您可以在不创建活动对象的情况下调用它):

从任何其他上下文(activity,fragment.getActivity(),service,…)中,我调用这个show方法来打开活动。例如,从ListView的onListItemClick侦听器(以这种方式调用侦听器在ListActivity或ListFragment中工作):

然后在MyActivity.onCreate()中调用:

String name = getIntent().getStringExtra("arg_string1");
int number = getIntent().getIntExtra("arg_int1");
boolean mBoolean = getIntent().getBooleanExtra("arg_boolean1");

看看Bundle类,您可以使用它在活动和片段之间传递数据。

感谢视频。我去看看。这基本上就是我想要的要点。我已经有了一个从ArrayAdapter动态填充的ListView。并说每个ListView行都有名称、图像等。。。当我单击某一行时,我希望该行数据的名称、图像等显示在新活动中。这就像是一个个人资料页面。现在我知道你想要什么了,如果你想要一些简单的东西,请检查下面的答案或进入视频,这样你就可以自己创建它,并了解编写的每一段代码。但是如果你想要一个可定制的示例,我会发布给你一个可定制适配器的示例,你可以在其中组织你的列表和控制从设计到点击(在图片文本或任何你放在列表中的项目上)嗨,大卫。很抱歉迟了回复!过去一周我一直在度假。实际上,我将ListView放在一个片段页面中,因此您发布的代码与它不太兼容。你能告诉我如何在一个片段页面中工作的正确方向吗?请注意,
Deal-all\u-Deal\u数据[]
将来自外部源,这只是出于测试目的。谢谢你的帮助!另外,
show()
方法如何在不创建活动对象的情况下工作?我正在为活动页面在XML文件中进行页面的所有布局格式化。
show()
可以与XML格式一起使用吗?在.onListItemClick()中调用.show()时,唯一需要更改的是“this”,将其更改为getActivity()。这是因为show()需要一个上下文,而片段不是上下文,但它所附加的活动是一个上下文(您可以通过getActivity()获得它)。show是一个静态方法,这意味着您可以在不创建对象的情况下调用它。在静态方法中,不能使用来自对象的变量,只能使用静态变量和传递给该方法的参数。show()在本例中,只需创建意图,用参数填充它,然后以该意图启动活动。将启动您的活动并调用onCreate。它的工作原理与以前完全相同,只是一个实用程序,用于编写更少的代码(并减少参数错误)。如果最终使用了此方法,请记住接受答案!再见!
@Override
public void onListItemClick(ListView listView, View view, int position,
        long id) {
    super.onListItemClick(listView, view, position, id);
      //Item with index = position has been clicked in listView
      MyActivity.show(this, item[position].name, item[position].number, item[position].mBoolean);
}
String name = getIntent().getStringExtra("arg_string1");
int number = getIntent().getIntExtra("arg_int1");
boolean mBoolean = getIntent().getBooleanExtra("arg_boolean1");