Android 如何获取我的arraylist字符串值?
嗨,我创建了完全基于xml的android应用程序,所以我使用了sax解析器。现在我有一个疑问,我的疑问是如何将arraylist值从一个活动解析为另一个活动。首先,我解释我的项目,我的第一个屏幕显示,2个旋转器和一个网格视图 两个微调器和网格视图显示我的xml标记字符串值,微调器显示一些字符串值,然后我的网格视图在微调器底部显示一些图像。这是我的主屏幕 如果我自动选择我的第一个微调器值,我的第二个微调器和栅格视图也会更改 我的疑问是,如果我单击“栅格视图图像”的“打开一个”选项卡布局。我在选项卡布局中添加了三个选项卡。现在选项卡只显示空屏幕,但我希望在第一个选项卡视图中显示一些文本。我在arraylist中存储了一些字符串值arraylist的名称是mspec_List。现在我试着把这个值从一个活动解析为另一个活动?如果我单击我的图像,我想在我的第一个选项卡中显示我的arraylist文本,仅此而已,请帮助我 这是我的主要活动完整来源:Android 如何获取我的arraylist字符串值?,android,arraylist,parcelable,Android,Arraylist,Parcelable,嗨,我创建了完全基于xml的android应用程序,所以我使用了sax解析器。现在我有一个疑问,我的疑问是如何将arraylist值从一个活动解析为另一个活动。首先,我解释我的项目,我的第一个屏幕显示,2个旋转器和一个网格视图 两个微调器和网格视图显示我的xml标记字符串值,微调器显示一些字符串值,然后我的网格视图在微调器底部显示一些图像。这是我的主屏幕 如果我自动选择我的第一个微调器值,我的第二个微调器和栅格视图也会更改 我的疑问是,如果我单击“栅格视图图像”的“打开一个”选项卡布局。我在选项
public class ParxmlActivity extends Activity {
private String array_spinner[];
private Cursor cursor;
private int columnIndex;
ParsedExampleDataSet parsedExampleDataSet= null;
ArrayList<String> hltag_List=new ArrayList<String>();
ArrayList<Subchild>sltag_List=new ArrayList<Subchild>();
ArrayList<String> name_List =new ArrayList<String>();
ArrayList<String> path_List =new ArrayList<String>();
ArrayList<String> mmimage_List = new ArrayList<String>();
ArrayList<String> mname_List = new ArrayList<String>();
ArrayList<String> mmimage = new ArrayList<String>();
ArrayList<String> mvideo_List = new ArrayList<String>();
ArrayList<schild> model_List =new ArrayList<schild>();
ArrayList<String> mspec_List = new ArrayList<String>();
Spinner spinner_hltag,spinner_sltag, spinner_path;
ArrayAdapter<String> adapter_hltag;
ArrayAdapter<String> adapter_sltag;
ArrayAdapter<String> adapter_path;
int hltagPos=0;
int sltagPos=0;
Object sdcard;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView sdcardImages = (GridView) findViewById(R.id.sdcard);
spinner_hltag= (Spinner) findViewById(R.id.spinner1);
spinner_sltag = (Spinner) findViewById(R.id.spinner2);
sdcardImages.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Intent intent = new Intent(ParxmlActivity.this, tabview.class);
intent.putStringArrayListExtra("numbers", mspec_List);
//intent.putExtra("name",model_List.get(position).name);
startActivity(intent);
}
});
sdcardImages.setAdapter(new ImageAdapter(this));
String[] proj = {MediaStore.Images.Thumbnails._ID};
cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
try {
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
/* Get the XMLReader of the SAXParser we created. */
XMLReader xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader */
ExampleHandler myExampleHandler = new ExampleHandler();
xr.setContentHandler(myExampleHandler);
/* Parse the xml-data from our file. */
xr.parse(new InputSource(getAssets().open("mafile.xml")));
/* Parsing has finished. */
parsedExampleDataSet =myExampleHandler. myParsedExampleDataSet;
for (int i = 0; i < parsedExampleDataSet.gethltag().size(); i++) {
Log.v("gethltag SIZE ", ""+parsedExampleDataSet.gethltag().size());
hltag_List.add(parsedExampleDataSet.getHLTag().get(i));
}
sltag_List = parsedExampleDataSet.getSLTag(hltag_List.get(hltagPos));
for(int i = 0; i < sltag_List.size(); i++) {
name_List.add(sltag_List.get(i).name);
path_List.add(sltag_List.get(i).path);
}
model_List.clear();
model_List = sltag_List.get(sltagPos).model;
for(int j = 0; j<model_List.size(); j++){
mmimage_List.addAll(model_List.get(j).imageList);
mname_List.add(model_List.get(j).name);
mvideo_List.addAll(model_List.get(j).videoList);
mmimage.add(model_List.get(j).mimage);
mspec_List.add(model_List.get(j).spec);
}
spinner_hltag.setAdapter(new MyAdapter(ParxmlActivity.this, R.layout.row, hltag_List));
spinner_sltag.setAdapter(new MyAdapter1(ParxmlActivity.this, R.layout.row1,name_List));
} catch (Exception e) {
}
}
private class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return path_List.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
//Bitmap bitmap = BitmapFactory.decodeFile(path_List);
Bitmap bitmap = BitmapFactory.decodeFile(path_List.get(position));
imageView.setImageBitmap(bitmap);
return imageView;
}
}
public class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int textViewResourceId, ArrayList<String> hltagList) {
super(context, textViewResourceId, hltagList);
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.row, parent, false);
TextView label=(TextView)row.findViewById(R.id.weekofday);
label.setText(hltag_List.get(position));
ImageView icon=(ImageView)row.findViewById(R.id.icon);
Bitmap bitmap = BitmapFactory.decodeFile(path_List.get(position));;
icon.setImageBitmap(bitmap);
return row;
}
}
public class MyAdapter1 extends ArrayAdapter<String>{
public MyAdapter1(Context context, int textViewResourceId, ArrayList<String> name_List) {
super(context, textViewResourceId, name_List);
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.row, parent, false);
TextView sub=(TextView)row.findViewById(R.id.weekofday1);
sub.setText(name_List.get(position));
ImageView icon=(ImageView)row.findViewById(R.id.icon);
Bitmap bitmap = BitmapFactory.decodeFile(path_List.get(position));;
icon.setImageBitmap(bitmap);
return row;
}
}
}
公共类ParxmlActivity扩展活动{
私有字符串数组_微调器[];
私有游标;
私有索引;
ParsedExampleDataSet ParsedExampleDataSet=null;
ArrayList hltag_List=新建ArrayList();
ArrayListsltag_List=新的ArrayList();
ArrayList name_List=新建ArrayList();
ArrayList path_List=新建ArrayList();
ArrayList mmimage_List=新建ArrayList();
ArrayList mname_List=新的ArrayList();
ArrayList mmimage=新的ArrayList();
ArrayList mvideo_List=新的ArrayList();
ArrayList model_List=新的ArrayList();
ArrayList mspec_List=新建ArrayList();
微调器微调器标记、微调器标记、微调器路径;
阵列适配器标签;
阵列适配器标签;
阵列适配器路径;
int-hltagPos=0;
int-sltagPos=0;
对象SD卡;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView sdcardImages=(GridView)findViewById(R.id.sdcard);
spinner_hltag=(spinner)findViewById(R.id.spinner1);
spinner_sltag=(spinner)findViewById(R.id.spinner2);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Intent Intent=新的Intent(parxmlcactivity.this、tabview.class);
意图。PutstringArrayListXTRA(“数字”,mspec_列表);
//intent.putExtra(“名称”,型号列表.get(位置).name);
星触觉(意向);
}
});
setAdapter(新的ImageAdapter(this));
String[]proj={MediaStore.Images.Thumbnails.\u ID};
游标=managedQuery(MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI,
项目,空,空,空);
columnIndex=cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.\u ID);
试一试{
/*从SAXPArserFactory获取SAXParser*/
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
/*获取我们创建的SAXParser的XMLReader*/
XMLReader xr=sp.getXMLReader();
/*创建新的ContentHandler并将其应用于XML读取器*/
ExampleHandler myExampleHandler=新建ExampleHandler();
xr.setContentHandler(myExampleHandler);
/*解析文件中的xml数据*/
parse(新的InputSource(getAssets().open(“mafile.xml”));
/*解析已完成*/
parsedExampleDataSet=myExampleHandler.myParsedExampleDataSet;
对于(int i=0;i 对于(int j=0;j,如果我理解正确,您希望通过意图将数组列表
从一个活动
传递到另一个活动
如果将ArrayList
转换为String[]
,则可以将其放置在Intent
中以供使用
然后,您可以使用将数组放置到Intent中,并检索它。如果要传递某个类的整个arraylist,请使用Parcelable
我不会将ArrayList传递给另一个活动,而只是传递对该列表的引用。可以将ArrayList保存在单独的类中。通过对其实例使用静态方法和静态变量,可以将数据保存在其中
public class MyData{
static private MyData instanceOfMyData;
ArrayList<String> myStringList = new ArrayList<String>();
static synchronized public MyData getInstance() {
if (instanceOfMyData == null) instanceOfMyData = new MyData();
return instanceOfMyData;
}
static public ArrayList<?> getMyStringList(MyData instance){
return instance.myStringList;
}
}
公共类MyData{
静态私有MyData instanceOfMyData;
ArrayList myStringList=新的ArrayList();
静态同步公共MyData getInstance(){
如果(instanceOfMyData==null)instanceOfMyData=new MyData();
返回instanceOfMyData;
}
静态公共ArrayList getMyStringList(MyData实例){
return instance.myStringList;
}
}
然后,在任何活动中,您都可以通过两个调用访问ArrayList:
MyData myData = MyData.getInstance();
ArrayList<?> myStrings = MyData.getMyStringList(myData);
MyData MyData=MyData.getInstance();
ArrayList myStrings=MyData.getMyStringList(MyData);
然后,您可以使用引用myString来查看、添加或删除此集合中的项