1
다음 코드가 있습니다. 이미지를 drawable 폴더 및 api에서 먼저로드해야합니다. getData() 메소드를 사용하여 이미지를 드로어 블 폴더에서 성공적으로로드합니다., URL에서 이미지를로드하고 gridview을 업데이트하는 방법을 모르겠습니다. 내가 방법을 확인하시기 바랍니다 내가 예를onPostexecute AsyncTask에서 gridview를 사용하는 방법
을 제시해주십시오 안드로이드의 새로운 안함 나이도움이 난 방법 에 onPostExecute을 내 gridview에 코드를 언급 왜 응용 프로그램 충돌 주석 행 아래에있는 내 그리드를 업데이트 onPostExecute 방법
public class MainActivity extends AppCompatActivity {
private GridView gridView;
private GridViewAdapter gridAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView);
gridAdapter = new GridViewAdapter(this, R.layout.grid_item_layout, getData());
gridView.setAdapter(gridAdapter);
APICaller ob = new APICaller();
ob.execute();
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ImageItem item = (ImageItem) parent.getItemAtPosition(position);
//Create intent
Intent intent = new Intent(MainActivity.this, abc.class);
intent.putExtra("title", item.getTitle());
intent.putExtra("image", item.getImage());
//Start details activity
startActivity(intent);
}
});
}
/**
* Prepare some dummy data for gridview
*/
private ArrayList<ImageItem> getData() {
final ArrayList<ImageItem> imageItems = new ArrayList<>();
TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
for (int i = 0; i < imgs.length(); i++) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imgs.getResourceId(i, -1));
imageItems.add(new ImageItem(bitmap, "Image#" + i));
}
return imageItems;
}
private ArrayList<ImageItem> getData(appmodel[] data) {
Toast.makeText(getApplicationContext(),
data.toString(), Toast.LENGTH_LONG).show();
final ArrayList<ImageItem> imageItems = new ArrayList<>();
TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
for (int i = 0; i < imgs.length(); i++) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imgs.getResourceId(i, -1));
imageItems.add(new ImageItem(bitmap, "Image#" + i));
}
return imageItems;
}
class APICaller extends AsyncTask{
protected void onPostExecute(Object result)
{
String data = (String)result;
Gson g = new Gson();
Type t = new TypeToken<appmodel[]>(){}.getType();
appmodel[] appm = (appmodel[])g.fromJson(data,t);
// gridView = (GridView) findViewById(R.id.gridView);
// gridAdapter = new GridViewAdapter(getApplicationContext(), R.layout.grid_item_layout, getData());
// gridView.setAdapter(gridAdapter);
}
@Override
protected Object doInBackground(Object[] objects) {
HttpClient client = new DefaultHttpClient();
HttpGet getlish = new HttpGet("http://test.abc.com/api/test");
ResponseHandler<String> handler = new BasicResponseHandler();
Object result = new Object();
try {
result = client.execute(getlish,handler);
}
catch(Exception e)
{
}
return result;
}
}
}
난의 프로그램에있어서 아래 JSON 데이터
protected void onPostExecute(Object result)
{
String data = (String)result;
Log.d("myTag", data);
}
를 사용 로그 확인 JSON
[ {
"apptype": 1,
"imagename": "test",
"imageurl": "http://test.abc.com/androidimages/test/test.jpg"
}
]
를 사용하는 종속 다음은이
추가처럼 보인다 귀하의 코드는 조금 지저분합니다. 당신은'JSON'에서 구문 분석 URL을 원하고 gridview 어댑터로 다운로드할까요? – Yupi