2012-01-24 16 views
0

こんにちは、私は完全にXMLベースのアンドロイドアプリを作成したので、私はサックスパーサーを使用しました。今私は疑いがある、私の疑いは、別の活動にarraylist値1つの活動を解析する方法です。私は私のプロジェクトを説明し、私の最初の画面は2スピナーと1ガードビューを表示します。私のarraylist文字列の値を取得する方法は?

2つのスピナーとグリッド表示は、私のxmlタグ文字列値を表示します。スピナーはいくつかの文字列値を表示し、次に私のgridviewはいくつかのイメージをスピナー底面に表示します。これが私のメイン画面です。私は、グリッドビュー画像そのオープン1つのタブレイアウトをクリックすると

私は自動的に私の第二スピナとグリッドビューも変化し、私の第一スピナー値を選択した場合は....

私の疑問があります。私は自分のタブレイアウトに3つのタブを追加します。今度はタブには空の画面しか表示されませんが、最初のタブ表示にテキストを表示したいと思います。 arraylistにmspec_Listという文字列の値を格納しました。今、私はその価値1つの活動を別の活動に解析しようとしますか?私は私の画像をクリックすると、私はすべてだ私の第一のタブの私のArrayListのテキストを表示したい私を助けてください........

この私の主な活動の完全なソース:

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私を助けてください。

答えて

0

私は別のアクティビティへのArrayListが、そのリストにちょうど参照を渡しません。 arrayListを別のクラスに保つことは可能です。そのインスタンスに静的メソッドと静的変数を使用することで、そこにデータを保持することができます。

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

あなたはこのコレクションから項目を表示、追加または削除するには、基準myStringsを使用することができます。

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

は、その後、あなたの活動のいずれかで次の2回の呼び出しでのArrayListへのアクセスを得ることができます。

関連する問題