我正在尝试使用一个ListView中的选择来确定另一个ListView中显示的四个维度的列表。例如,第一个列表是:
A,B,C
然后选择列表A,您将获得
一二三
B会回来的。
4 5 6
如果选择1,则
一,二,三
选择5将返回花药列表,依此类推。这将继续到第四也是最后一个列表,该列表最终将是用户的选择。
首先,最终的ListView将具有大约380个不同的列表。如果选择A,则选择2,然后XII显示正确的列表。大概我可以根据选择将列表命名为A2XII,然后以该名称命名该列表。
目前,我的理论是设置第一个ListView,然后在侦听器中将其设置为INVISIBLE,然后将VISIBLE设置为下一个。然后,使用先前的选择来确定适配器使用的列表。
所以我的问题是:如何从一个列表中进行选择,并让它按名称确定下一个列表?
package org.wmu.LMWTA;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import org.wmu.LMWTA.R;
public class Frag_Form extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View V = (LinearLayout)inflater.inflate(R.layout.form_layout, container, false);
if (container == null) {
return null;
}
final ListView cityList = (ListView) V.findViewById(R.id.list_city);
final ListView cat = (ListView) V.findViewById(R.id.cat);
ArrayAdapter<CharSequence> cityAdapt = ArrayAdapter.createFromResource(getActivity(),
R.array.cities, android.R.layout.simple_spinner_dropdown_item);
ArrayAdapter<CharSequence> catAdapt = ArrayAdapter.createFromResource(getActivity(),
R.array.cat, android.R.layout.simple_spinner_dropdown_item);
//ArrayAdapter<CharSequence> catAdapt = ArrayAdapter.createFromResource(getActivity(),
// R.array.subCat, android.R.layout.simple_spinner_dropdown_item);
cat.setAdapter(catAdapt);
cat.setVisibility(View.GONE);
cityList.setAdapter(cityAdapt);
cityList.setOnItemClickListener( new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show toast
Toast.makeText(parent.getContext(),
(CharSequence) cityList.getItemAtPosition(position).toString().replaceAll("\\s+", ""), Toast.LENGTH_SHORT).show();
cityList.setVisibility(View.GONE);
cat.setVisibility(View.VISIBLE);
}
});
return V;
}
}
如果有更好的方法可以解决此问题,我将不胜感激。我最初的想法是使用微调器,但是我遇到了同样的问题,却没有在更多的交换机中嵌套380个交换机。
设置数组,使其包含它们所属的上一个列表的项的索引。
<string-array name="level_1">
<item>A</item>
<item>B</item>
<item>C</item>
</string-array>
接下来的三个数组是取决于level_1的数组
<string-array name="level_2_sub00">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="level_2_sub01">
<item>4</item>
<item>5</item>
<item>6</item>
</string-array>
和第一个level3数组:
<string-array name="level_3_sub00">
<item>I</item>
<item>II</item>
<item>III</item>
</string-array>
现在,您只需要使用所选项目的位置来计算下一个数组的名称:
String level2_arrayname = "level_2_sub" + String.valueof(position);
int resourceIdNext = getActivity().getResources.getIdentifier(level2_arrayname, "array", mypackagename);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句