构建我的第一个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);
答案 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);
我希望这会有所帮助。