从以前的Listview更改Listview项目

时间:2015-05-21 01:21:49

标签: java android xml

构建我的第一个Android应用程序。我成功地从公共类中调用了图像和文本块。所以,

在DetailFragment中,我有这个:

public class DetailFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    /** Inflating the layout country_details_fragment_layout to the view object v */
    View v = inflater.inflate(R.layout.detail_fragment, null);

    /** Getting the textview object of the layout to set the details */
    TextView tv = (TextView) v.findViewById(R.id.country_details);

    ImageView img = (ImageView) v.findViewById(R.id.disco);
   // ListView lines = (ListView) v.findViewById(R.id.country_list);

    String[] myList = new String[] {"Hello","World","Foo","Bar", "New"};


    /** Getting the bundle object passed from MainActivity ( in Landscape mode )  or from
     *  CountryDetailsActivity ( in Portrait Mode )
     * */
    Bundle b = getArguments();

    /** Getting the clicked item's position and setting corresponding details in the textview of the detailed fragment */
    tv.setText("Details of " + Country.name[b.getInt("position")]);
    img.setImageResource(DiscoImage.flags[b.getInt("position")]);


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, ??);
    setListAdapter(adapter);


    return v;
}

Country.java返回此信息:

public class Country {

/** Array of countries used to display in CountryListFragment */
static String name[] = new String[] {
        "BEYONCÉ","4","I Am... Sasha Fierce", "B'DAY", "Dangerously In Love"
};
}

Discoimage.java返回这个罚款:

 public class DiscoImage {
 static int[] flags = new int[]{

    R.drawable.ic_beycd,
    R.drawable.ic_4c,
    R.drawable.ic_cdiam,
    R.drawable.bdaycd,
    R.drawable.dilcd,
   };


    }

此时,当您单击上一个视图中的列表项时,下一个视图中的图像会发生变化,Textview也会发生变化。

我想知道,如何使用列表视图执行此操作?创建一个带有字符串的java文件,但是如何布局数据以及如何通过

调用它
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, NameofJavaClass.flags[b.getInt("position")]);
    setListAdapter(adapter);

1 个答案:

答案 0 :(得分:1)

您应该使用自定义ArrayAdapter。

要做到这一点,你必须做两件事。

1)创建要在视图中的每个项目中显示的布局,并将其另存为布局文件夹中的xml文件。

2)创建ArrayAdapter的子类(可以是内部),它实现以下两种方法:1; <SUBCLASSNAME>(Context context, int resource, item[] itemList) { super(context, resource, itemList); } 2; public View getView(int position, View convertView, ViewGroup parent)必须返回视图。

可以在https://www.youtube.com/watch?v=WRANgDgM2Zg找到一个很棒的视频示例。此外,如果您没有像他那样使用内部类,请创建一个类范围的LayoutInflator(例如private LayoutInflater inflater;)对象,并将其分配给构造函数(#2的第一部分),如inflater = LayoutInflater.from(context);

我希望这会有所帮助。