グリッドビューで画像を表示していますが、グリッドビューで検索を絞り込むように絞り込み検索ダイアログをデザインしましたが、問題は解析がうまく機能することです絞り込み検索を処理したときに、グリッドビューは次に更新されません。グリッドビュー項目が更新されないという意味は、以前の結果を示します。この問題のために私を助けてください。Androidでダイナミックにグリッドを更新する
コード:
package org.shopzilla.android.search;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.shopzilla.android.common.R;
import org.shopzilla.android.parsing.SearchResult_Json;
import org.shopzilla.android.parsing.Search_Refine_Json;
import org.shopzilla.android.parsing.Search_refine_grid;
import org.shopzilla.android.product.ProductComparisonActivity;
import com.flurry.android.FlurryAgent;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class SearchGridActivity extends Activity{
URL url1;
public static Bitmap[] bmp;
Bundle bundle;
GridView grid;
String prod_id;
public static String str,str1;
public static Boolean flag_grid=false;
public static int count =0;
ImageButton _gridImageButton, brand_options_btn,color_options_btn,mat_options_btn;
Button categories_btn;
public static String keyword;
ArrayList<HashMap<String,Object>> list ;
ListView listView,brandlist, colorlist;
static final int DIALOG_PRODUCE_ID = 0,DIALOG_REFINE_ID=1;
Dialog dialog_category,dialog_refine;
public static ArrayList<String> brand_list_load = new ArrayList<String>();
public static ArrayList<String> store_list_load = new ArrayList<String>();
public static ArrayList<String> brand_count = new ArrayList<String>();
public static ArrayList<String> brand_id = new ArrayList<String>();
public static ArrayList<String> brand_array_list = new ArrayList<String>();
public static ArrayList<String> store_array_list = new ArrayList<String>();
public static ArrayList<String> store_count = new ArrayList<String>();
public static ArrayList<String> store_id = new ArrayList<String>();
public static ArrayList<String> brand_selected = new ArrayList<String>();
public static ArrayList<HashMap<String,Object>> arr_list = new ArrayList<HashMap<String,Object>>();
String final_keyword;
public static Boolean falg=false;
String store_name;
String brand_name;
public String temp;
public static Boolean checkflag=true;
EditText et_search;
ArrayList<String> store_selected = new ArrayList<String>();
ArrayAdapter<String> slected_brand;
ArrayAdapter<String> slected_store;
ListView brand_list,store_list;
ArrayAdapter<String> arrayAdapter,storeAdapter, store_new_adapter, brand_new_adapter;
SimpleAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.searchgrid);
bundle = getIntent().getExtras();
if(count==0)
{
keyword = bundle.getString("keyword");
final_keyword = keyword;
}
//str1 = bundle.getString("temp");
grid = (GridView)findViewById(R.id.Search_Result_Grid);
grid.invalidateViews();
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
final ProgressDialog dialog = ProgressDialog.show(this, "BIZRATE", "Loading.......", true);
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
callHereForEff();
dialog.dismiss();
}
};
Thread checkUpdate = new Thread() {
public void run() {
if(count==1)
{
SearchResult_Json.json_parsing(final_keyword);
}
//SearchResultActivity.set_image();
Search_refine_grid.Json_parsing();
handler.sendEmptyMessage(0);
}
};
checkUpdate.start();
EditText et_search_grid = (EditText)findViewById(R.id.txt_search_grid);
et_search_grid.setText(keyword);
et_search_grid.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(SearchGridActivity.this,SearchTabActivity.class);
startActivity(intent);
}
});
Button btn_list = (Button)findViewById(R.id.btn_searchresult_list);
Button btn_refine = (Button)findViewById(R.id.btn_RefineSearch);
btn_refine.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
arrayAdapter =
new ArrayAdapter<String>(SearchGridActivity.this,R.layout.ref_row, R.id.label, brand_list_load);
storeAdapter =
new ArrayAdapter<String>(SearchGridActivity.this,R.layout.ref_row, R.id.label, store_list_load);
showDialog(0);
}
});
btn_list.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(SearchGridActivity.this,SearchResultActivity.class);
intent.putExtra("keyword", keyword);
startActivity(intent);
finish();
}
});
/*for(int j=0;j<SearchResultActivity.image_me.size();j++)
{
ImageView iv = new ImageView(this);
//iv.setImageBitmap(SearchResultActivity.me_bmp[j]);
HashMap<String,Object> temp = new HashMap<String,Object>();
temp.put("image",iv.VISIBLE);
temp.put("price", SearchResultActivity.min_price.get(j));
arr_list.add(temp);
}
adapter = new SimpleAdapter(SearchGridActivity.this,arr_list,R.layout.search_result_griditem,new String[] {"image","price"},new int[] {R.id.img_SearchResultGrid_Product,R.id.txt_SearchResultGrid_Price});
grid.setAdapter(adapter);*/
grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(SearchGridActivity.this, "" + position, Toast.LENGTH_SHORT).show();
if(SearchResultActivity.type.get(position).equals("OFFER"))
{
prod_id = SearchResultActivity.id.get(position);
System.out.println("Offer Id==================="+prod_id);
//type_po=true;
Intent intent = new Intent(SearchGridActivity.this,ProductComparisonActivity.class);
intent.putExtra("prod_type", "true");
intent.putExtra("prod_id", SearchResultActivity.id.get(position));
startActivity(intent);
}
else
{
prod_id = SearchResultActivity.id.get(position);
System.out.println("Product Id==================="+prod_id);
//type_po=false;
Intent intent = new Intent(SearchGridActivity.this,ProductComparisonActivity.class);
//intent.putExtra("productType", "SZPID");
intent.putExtra("prod_type", "false");
intent.putExtra("prod_id", SearchResultActivity.id.get(position));
startActivity(intent);
}
}
});
}
//Clear Arraylists
public static void arralist_clear()
{
SearchResultActivity.min_price.clear();
SearchResultActivity.image_me.clear();
}
protected void callHereForEff() {
if(count==1)
{
//ImageAdapter obj1 = new ImageAdapter(this);
//obj1.notifyDataSetChanged();
grid.setAdapter(new ImageAdapter(this));
final ImageAdapter im = new ImageAdapter(this);
im.notifyDataSetChanged();
}
else
{
//ImageAdapter obj = new ImageAdapter(this);
//obj.notifyDataSetChanged();
grid.setAdapter(new ImageAdapter(this));//Load the GridView
final ImageAdapter im = new ImageAdapter(this);
im.notifyDataSetChanged();
}
//grid.setAdapter(adapter);
}
//Showing Images with TextViews in Grid View
public class ImageAdapter extends BaseAdapter{
Context mContext;
public static final int ACTIVITY_CREATE = 10;
public ImageAdapter(Context c){
mContext = c;
}
public int getCount() {
// TODO Auto-generated method stub
return SearchResultActivity.image_me.size();
}
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if(convertView==null){
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.search_result_griditem, null);
TextView tv = (TextView)v.findViewById(R.id.txt_SearchResultGrid_Price);
tv.setText(SearchResultActivity.min_price.get(position));
ImageView iv = (ImageView)v.findViewById(R.id.img_SearchResultGrid_Product);
iv.setImageBitmap(SearchResultActivity.me_bmp[position]);
}
else
{
v = convertView;
}
return v;
}
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
}
//Dialog Creation for Refine Search.
@Override
protected Dialog onCreateDialog(int id) {
brand_list_load.add(brand_array_list.get(0));
store_list_load.add(store_array_list.get(0));
store_new_adapter = new ArrayAdapter<String>(this,R.layout.ref_row, R.id.label, store_array_list);
brand_new_adapter = new ArrayAdapter<String>(this,R.layout.ref_row, R.id.label, brand_array_list);
switch(id) {
case 0:
dialog_refine = new Dialog(this);
dialog_refine.setContentView(R.layout.refine_dialog);
brand_list= (ListView)dialog_refine.findViewById(R.id.exp);
store_list= (ListView)dialog_refine.findViewById(R.id.exp_mat);
brand_list.invalidate();
store_list.invalidate();
brand_options_btn = (ImageButton)dialog_refine.findViewById(R.id.options_btn1);
et_search = (EditText)dialog_refine.findViewById(R.id.txt_RefineSearch);
et_search.setText(keyword);
mat_options_btn = (ImageButton)dialog_refine.findViewById(R.id.options_btn3);
//Loads Brands List
brand_list.setAdapter(arrayAdapter);
//Loads Color List
//Loads Material List
store_list.setAdapter(storeAdapter);
//Reset Button
//Click on any Brand
brand_list.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3)
{
String brand = (String) (brand_list.getAdapter()).getItem(arg2);
brand_name = "+"+brand;
temp = (String) (brand_list.getAdapter()).getItem(0);
brand_selected.clear();
brand_selected.add(brand);
//brand_list_load.clear();
arrayAdapter.clear();
brand_list.invalidate();
reload_list();
//arrayAdapter.add(brand);
//slected_brand = new ArrayAdapter<String>(this,R.layout.ref_row, R.id.label, brand_selected);
System.out.println("POSITION IS-->"+ brand);
}
});
//Click on any Store
store_list.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3)
{
String store = (String) (store_list.getAdapter()).getItem(arg2);
store_name = "+"+store;
store_selected.clear();
store_selected.add(store);
//storeAdapter.add(store);
storeAdapter.clear();
store_list.invalidate();
reload_storelist();
System.out.println("POSITION IS-->"+ store);
}
});
//Brand options
brand_options_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
arrayAdapter.clear();
brand_list.invalidate();
brand_list.setAdapter(brand_new_adapter);
}
});
// Material Options
mat_options_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
storeAdapter.clear();
store_list.invalidate();
store_list.setAdapter(store_new_adapter);
}
});
Button btn_reset = (Button)dialog_refine.findViewById(R.id.btn_Refine_reset);
btn_reset.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog_refine.dismiss();
}
});
//Done Button
Button done_btn=(Button)dialog_refine.findViewById(R.id.btn_Refine_Done);
done_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//checkflag=false;
count=1;
SearchResultActivity.arraylists_clear();
final_keyword=et_search.getText().toString()+brand_name+store_name;
Intent intent = new Intent(SearchGridActivity.this, SearchGridActivity.class);
intent.putExtra("keyword", keyword);
startActivity(intent);
}
});
break;
default:
dialog_refine = null;
}
return dialog_refine;
}
protected void reload_storelist() {
// TODO Auto-generated method stub
slected_store= new ArrayAdapter<String>(this,R.layout.ref_row, R.id.label, store_selected);
store_list.setAdapter(slected_store);
}
protected void reload_list() {
//brand_list.invalidate();
//arrayAdapter.clear();
slected_brand = new ArrayAdapter<String>(this,R.layout.ref_row, R.id.label, brand_selected);
brand_list.setAdapter(slected_brand);
//brand_selected.clear();
}
//Flurry Implementation
public void onStart()
{
super.onStart();
FlurryAgent.onStartSession(this, "AJT5DWUVF6IAE78NQV69");
// your code
}
public void onStop()
{
super.onStop();
FlurryAgent.onEndSession(this);
// your code
}
}