0

画像(URLからグリッドビューに画像を表示)とEdittextboxをAndroidグリッドビューに配置するのを手伝ってください

これは私のグリッド ビューの xml レイアウトです。

  <TextView 
  android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 />

 <GridView 
 android:id="@+id/order_details_grid" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 android:numColumns="4" 
 android:columnWidth="100px" 
 android:stretchMode="columnWidth" 
 android:gravity="center"/> 
 </LinearLayout>

以下は、グリッドを作成するために使用するコードであり、正常に動作しています。URL から取得した画像を配置し、テキストボックスを編集する必要があります。

    super.onCreate(savedInstanceState); 
  setContentView(R.layout.order_details);
  File yourFile = new File("/sdcard/json/orderdetails.txt");
  FileInputStream stream = null;
try {
    stream = new FileInputStream(yourFile);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
   String jString = "";
  try {
      FileChannel fc = stream.getChannel();
      MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());


      /* Instead of using default, pass in a decoder.*/ 
      jString = Charset.defaultCharset().decode(bb).toString();

  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
  finally {
      try {
        stream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }

  String fileContent=jString;
  JSONObject jobj = null;
  JSONObject jobj1 = null;
try {
    jobj = new JSONObject(fileContent);
} catch (JSONException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

try {

    JSONArray ja = jobj.getJSONArray("ORDERDETAILS");   

    listContent.add("ITEM NAME");
    listContent.add("ORDER QUANTITY");
    listContent.add("PRICE");
    listContent.add("PREFERED SHOP");
    for(int i=0; i<ja.length(); i++){              
           String ORDERDETAILS = ja.getString(i);
           System.out.println(ORDERDETAILS);               
           jobj1 = new JSONObject(ORDERDETAILS);
           String ITEMNAME = jobj1.getString("ITEMNAME");          
           listContent.add(ITEMNAME);
           System.out.println(ITEMNAME);
           String ORDERQUANTITY = jobj1.getString("ORDERQUANTITY");            
           listContent.add(ORDERQUANTITY);
           System.out.println(ORDERQUANTITY);
           String PRICE = jobj1.getString("PRICE");          
           listContent.add(PRICE);             
           System.out.println(PRICE);
           String SHOPNAME = jobj1.getString("SHOPNAME");
           System.out.println(SHOPNAME);             
           listContent.add(SHOPNAME);

    }

} catch (JSONException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}    
  gridView = (GridView)findViewById(R.id.order_details_grid);
  ArrayAdapter<String> adapter = new ArrayAdapter<String>      (this,android.R.layout.simple_list_item_1,listContent); 
  gridView.setAdapter(adapter);
 // gridView.setAdapter(new ImageAdapter(this));

}

これは、json データを取得した json ファイルです。

           {
"ORDERDETAILS": [
    {
        "ITEMNAME": "APPLE-LAPTOP",
        "ORDERQUANTITY": "35",
        "PRICE": "4500 DHMS",
        "SHOPNAME": "Indico Icon Kits 403",
        "SHOPIMAGEURL": "http://s0.geograph.org.uk/photos/43/03/430378_cc40fae8.jpg"
    },
    {
        "ITEMNAME": "ASUS-NOTEBOOK",
        "ORDERQUANTITY": "35",
        "PRICE": "3500 DHMS",
        "SHOPNAME": "Indico Icon Kits 403",
        "SHOPIMAGEURL": ""
    },
   {
        "ITEMNAME": "DELL-LAPTOP",
        "ORDERQUANTITY": "35",
        "PRICE": "9500 DHMS",
        "SHOPNAME": "Indico Icon Kits 403",
        "SHOPIMAGEURL": ""
    }
  ]
  }
4

2 に答える 2

1

を使用せず、独自のカスタム アダプターを作成するためにArrayAdapter拡張するクラスを作成します。BaseAdapter

次に、getView メソッドで、グリッドの各セルの xml レイアウトを拡張します (TextView、EditText、画像など、必要なものを配置できます)。

オーバーライドされた getView メソッドは次のようになります。

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {


   View cell;
   if(convertView==null){
    cell= new View(context);
    //create a file "cell_layout.xml" in your layout folder to define the layout for each cell
    cell= layoutInflater.inflate(R.layout.cell_layout, null);
   }else{
    cell= (View)convertView;
   }

   ImageView imageView = (ImageView)cell.findViewById(R.id.image);
   imageView.setImageBitmap(bitmap[position]);

   TextView textView = = (TextView)cell.findViewById(R.id.text);
   textView .setText("hello world from gridView");
   return cell;
  }

より完全な例はここにあります が、「カスタムアダプター」をグーグルで検索すると多くの例が見つかります

URL から画像を読み込む問題は別のトピックです。Armaan からの回答は良いようです。GreenDroid プロジェクト、特に私がよく使用したAsynImageViewをご覧になることをお勧めします。

于 2013-07-24T08:16:42.937 に答える
1

以下のリンクをチェックして、役立つサンプルアプリケーションをダウンロードしてください

https://github.com/nostra13/Android-Universal-Image-Loader

于 2013-07-22T12:11:10.027 に答える