【问题标题】:how to get my arraylist string value?如何获取我的arraylist 字符串值?
【发布时间】:2012-01-24 11:18:11
【问题描述】:

您好,我创建了完全基于 xml 的 Android 应用程序,所以我使用了 sax 解析器。现在我有一个疑问,我的疑问是如何将 arraylist 值解析为另一个活动。首先我解释我的项目,我的第一个屏幕显示 2spinner 和一个网格视图。

两个微调器和网格视图显示我的 xml 标记字符串值,微调器显示一些字符串值,然后我的网格视图在微调器底部显示一些图像。这是我的主屏幕。

如果我自动选择我的第一个微调器值,我的第二个微调器和网格视图也会改变....

我怀疑如果我单击我的网格视图图像,它会打开一个选项卡布局。我在标签布局中添加了三个标签。现在选项卡只显示空屏幕,但我希望在第一个选项卡视图中显示一些文本。我在我的数组列表中存储了一些字符串值,数组列表的名称是 mspec_List。现在我尝试将该值解析为一项活动到另一项活动?如果我单击我的图像,我想在我的第一个选项卡中显示我的数组列表文本,这就是全部,请帮助我........

这是我的主要活动完整来源:

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;
        }
    }

}

请查看我上面的代码并查看以下几行:1. sdcardImages.setOnItemClickListener 2. mspec_List 数组列表,然后这是我的选项卡布局源代码链接:1. http://paste.org/44196 2. http://paste.org/44195 请帮帮我。

【问题讨论】:

    标签: android arraylist parcelable


    【解决方案1】:

    如果我理解正确,从您的问题来看,您希望通过IntentArrayList&lt;String&gt; 从一个Activity 传递给另一个Intent

    如果您将ArrayList 转换为String[],则可以将其放在Intent 中,为此使用List#toArray(T[])

    然后您可以使用Intent#putExtra(java.lang.String, java.lang.String[]) 将数组放入Intent,并使用Intent#getStringArrayExtra(java.lang.String) 检索它。

    【讨论】:

      【解决方案2】:

      我不会将 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;
          }
      }
      

      然后在您的任何活动中,您都可以通过两次调用访问 ArrayList:

          MyData myData = MyData.getInstance();
          ArrayList<?> myStrings = MyData.getMyStringList(myData);
      

      然后您可以使用引用 myStrings 来查看、添加或删除此集合中的项目。

      【讨论】:

        【解决方案3】:

        除了这些原始数据类型,如果你想传递某个类的整个数组列表,请使用 Parcelable。

        http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-29
          • 1970-01-01
          • 2020-07-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多