我的片段中有3个列表,即列表1,列表2和列表3。并且所有这些都是相互依赖的。我使用AsyncTask来显示这些列表。 当我点击列表1时,它会在列表3上显示一些数据,依此类推,当我在列表2上显示时,它会在list3上显示数据。 现在的问题是有一个下一个按钮,如果我没有点击列表2并按下接下来它没有显示正确的数据。 list 2返回null,因此功能不正确。
以下是代码
public class Browse extends Fragment {
ActionBar actionBar;
ListView listView1, listView2, listView3;
ArrayList<String> englishList = new ArrayList<String>();
ArrayList<String> hindiList = new ArrayList<String>();
ArrayList<String> alist1 = new ArrayList<String>();
ArrayList<String> alist2 = new ArrayList<String>();
String response, reply;
TextView tv2;
Browse_Adapter ListAdapter, ListAdapter1;
Browse_Adapter2 adpter2;
LinearLayout linera_t_Layout_1;
boolean result = false;
TextView prev, next;
int pageno = 0, epp;
String txt;
protected String resourceType;
String s;
Context context;
File dbFile1_,dbFile2_,dbFile;
ProgressDialog loadingDialog;
public String DB1 = "sk1.db";
public String DB2 = "sk2.db";
String global,list1_global="a";
Boolean list_flag;
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.browse, container, false);
actionBar=getActivity().getActionBar();
MainActivity.state="browse";
context=getActivity().getBaseContext();
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
actionBar.setTitle(getResources().getString(R.string.browse_en));
} else {
actionBar.setTitle(getResources().getString(R.string.browse_hi));
}
/* PREVIOUS AND NEXT TEXTVIEWS CLICKLISTENERS */
prev = (TextView) rootView.findViewById(R.id.prev);
next = (TextView) rootView.findViewById(R.id.next);
// listView 1
listView1 = (ListView) rootView.findViewById(R.id.listView1);
// listView 2
listView2 = (ListView) rootView.findViewById(R.id.listView2);
// listView 3
listView3 = (ListView) rootView.findViewById(R.id.listView3);
listView1.setChoiceMode(1);
listView2.setChoiceMode(1);
listView3.setChoiceMode(1);
View view = inflater.inflate(R.layout.browse, null);
resourceType = (String) view.getTag();
if (resourceType.equals("large")) {
epp = 25;
} else if (resourceType.equals("normal"))
{
epp = 17;
} else if (resourceType.equals("small"))
{
epp = 12;
}
if (!InternetConnection.isInternetOn(context))
{
s= Environment.getExternalStorageDirectory() .toString();
dbFile1_ = new File(s,"sk1.db");
if(!filter.accept(dbFile1_)){
final AlertDialog.Builder alertbox = new AlertDialog.Builder(getActivity());
alertbox.setTitle("Shabdkosh Dictionary");
alertbox.setMessage("Internet connection is not available.");
alertbox.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.show();
}
else{
listView1.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
final TextView textView = (TextView) view
.findViewById(R.id.text);
if (alist1.size() > 0) {
alist1.clear();
}
if (alist2.size() > 0) {
alist2.clear();
}
prev.setVisibility(View.GONE);
pageno = 0;
textView.setBackgroundColor(getResources().getColor(R.color.text_color));
int DELAY = 200;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
textView.setBackgroundColor(getResources().getColor(
R.color.White));
}
}, DELAY);
txt = textView.getText().toString();
list_flag=true;
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
new brs(getActivity()).execute();
//new brs_wd(getActivity(),pageno,list1_global).execute();
} else {
new brs(getActivity()).execute();
//new brs_wd(getActivity(),pageno,list1_global).execute();
}
}
});
}
}
else{
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
final TextView textView = (TextView) view
.findViewById(R.id.text);
if (alist1.size() > 0) {
alist1.clear();
}
if (alist2.size() > 0) {
alist2.clear();
}
prev.setVisibility(View.GONE);
pageno = 0;
textView.setBackgroundColor(getResources().getColor(R.color.text_color));
int DELAY = 200;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
textView.setBackgroundColor(getResources().getColor(
R.color.White));
}
}, DELAY);
txt = textView.getText().toString();
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
list_flag=true;//
new brs(getActivity()).execute();
} else {
new brs(getActivity()).execute();
}
}
});
}
prev.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
list_flag=false;
prev.setTextColor((getResources().getColor(R.color.more_changed)));
int DELAY = 200;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
prev.setTextColor((getResources().getColor(R.color.text_color)));
}
}, DELAY);
if (alist2.size() > 0) {
alist2.clear();
}
if (pageno > 0) {
pageno = pageno - 1;
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
new brs_wd(getActivity(),pageno,global).execute();
} else {
new brs_wd(getActivity(),pageno,global).execute();
}
}
else {
prev.setVisibility(View.GONE);
}
}
});
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
list_flag=false;//
next.setTextColor((getResources().getColor(R.color.more_changed)));
int DELAY = 200;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
next.setTextColor((getResources().getColor(R.color.text_color)));
}
}, DELAY);
prev.setVisibility(View.VISIBLE);
prev.setText("<<Prev");
if (alist2.size() > 0) {
alist2.clear();
}
pageno = pageno + 1;
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
new brs_wd(getActivity(),pageno,global).execute();
} else {
new brs_wd(getActivity(),pageno,global).execute();
}
}
});
englishList.addAll(Arrays.asList("A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
"T", "U", "V", "W", "X", "Y", "Z"));
hindiList.addAll(Arrays.asList("अ", "आ", "इ", "ई", "उ", "ऊ", "à¤", "à¤",
"ओ", "औ", "अà¤", "आà¤", "ऋ", "क", "ख", "ग", "घ", "ङ", "च", "छ",
"ज", "à¤", "ञ", "ट", "ठ", "ड", "ढ", "ण", "त", "थ", "द", "ध",
"न", "प", "फ", "ब", "à¤", "म", "य", "र", "ल", "व", "श", "ष",
"स", "ह", "कà¥à¤·" , "तà¥à¤°","जà¥à¤ž"));
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US"))
{try{
Browse_Adapter listAdapter1 = new Browse_Adapter(context,
R.layout.browse_list_item, englishList);
if(listAdapter1!=null)
listView1.setAdapter(listAdapter1);}
catch(Exception e){e.printStackTrace();}
} else {
Browse_Adapter listAdapter1 = new Browse_Adapter(context,
R.layout.browse_list_item, hindiList);
if(listAdapter1!=null)
listView1.setAdapter(listAdapter1);
}
listView2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos,long id)
{
String item = (String)parent.getItemAtPosition(pos);
global=item;
if (alist2.size() > 0)
{
alist2.clear();
}
pageno = 0;
final TextView textView = (TextView) view
.findViewById(R.id.text_browsword);
textView.setTextColor(getResources().getColor(
R.color.text_color));
int DELAY = 200;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
textView.setTextColor(getResources().getColor(
R.color.White));
}
}, DELAY);
//list1_global=alist1.get(0);
list_flag=false;
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US")) {
new brs_wd(getActivity(),pageno,item).execute();
} else {
new brs_wd(getActivity(),pageno,item).execute();
}
}
});
listView3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
final TextView textView = (TextView) view
.findViewById(R.id.text_browsword);
if (InternetConnection.isInternetOn(context)) {
SearchData_DTO.setSearchData_DTO(new SearchData()
.getSearched(textView.getText().toString(),
context));
} else {
SearchData_DTO.setSearchData_DTO(new SearchDataDB()
.getSearchedDB(textView.getText().toString(),
context));
}
Intent i = new Intent(context, Search.class);
i.putExtra("selected", textView.getText().toString().replace("(m)", "").replace("(f)", "") .replace("(n)", ""));
startActivity(i);
}
});
setHasOptionsMenu(true);
return rootView;
}
public void onPrepareOptionsMenu(Menu menu)
{
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US"))
{
menu.removeItem(R.id.English);
menu.removeItem(R.id.Gujarati);
menu.removeItem(R.id.Punjabi);
menu.removeItem(R.id.Bengali);
menu.removeItem(R.id.Marathi);
menu.removeItem(R.id.Talugu);
menu.removeItem(R.id.Tamil);
} else
{
menu.removeItem(R.id.Hindi);
menu.removeItem(R.id.Gujarati);
menu.removeItem(R.id.Punjabi);
menu.removeItem(R.id.Bengali);
menu.removeItem(R.id.Marathi);
menu.removeItem(R.id.Talugu);
menu.removeItem(R.id.Tamil);
}
return;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
item.collapseActionView();
if (R.id.Hindi == item.getItemId()) {
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, new Browse());
fragmentTransaction.commit();
}
if (R.id.English == item.getItemId()) {
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, new Browse());
fragmentTransaction.commit();
}
return super.onOptionsItemSelected(item);
}
public boolean browseLetter(final String query, final Context context,final String lang, final String tl)
{
if (InternetConnection.isInternetOn(context))
{
try {
response = CustomHttpClient.executeHttpGet(BROWSE_URL+ "sl=" + lang + "&tl=" + tl+ "&t=1&epp=0&p=1&e=" + query);
if (response != null) {
JSONArray arr = new JSONArray(response);
for (int i = 0; i < arr.length(); i++) {
alist1.add(arr.getString(i));
}
result = true;
Log.v("--------list1----------", alist1.toString());
}
} catch (Exception e) {
Log.e("/////////////////////////Exception in LIST1 ", e.toString());
}
return true;
} else
{
if (!InternetConnection.isInternetOn(context)) {
s = Environment.getExternalStorageDirectory().toString();
dbFile1_ = new File(s, "sk1.db");
dbFile2_ = new File(s, "sk2.db");
if(dbFile1_.exists()||dbFile2_.exists())
{
/* do something */
alist1 = new ArrayList<String>(new SearchDataDB().ltwo(context,query, lang));
}
else
{
final AlertDialog.Builder alertbox = new AlertDialog.Builder(getActivity());
alertbox.setTitle("Error");
alertbox.setMessage("Internet connection is not available.");
alertbox.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.show();
}
}
try{
Browse_Adapter2 listAdapter2 = new Browse_Adapter2(context,R.layout.browse_list_item, alist1);
if(listAdapter2!=null)
listView2.setAdapter(listAdapter2);
result = true;
}
catch(Exception e){e.printStackTrace();}
}
return result;
}
public String browseWord(final String query, final Context context,final String lang, final String tl, final int epp, final int p,String letter)
{
if (InternetConnection.isInternetOn(context))
{
try {
response = CustomHttpClient.executeHttpGet(BROWSE_WORD+ "sl=" + lang + "&tl=" + tl + "&t=2&epp="+ epp + "&p=" + p + "&e=" + query);//
if (response != null) {
JSONArray arr = new JSONArray(response);
for (int i = 0; i < arr.length(); i++) {
alist2.add(arr.getString(i));
}
}
} catch (Exception e)
{
Log.e("/////////////////////////Exception in LIST2 ", e.toString());
}
return response;
} else {
if (!InternetConnection.isInternetOn(context))
{
alist2 = new ArrayList<String>(new SearchDataDB().bword(context, query, lang));
try{
Browse_Adapter2 listAdapter3 = new Browse_Adapter2(context,R.layout.browse_list_item, alist2);
if(listAdapter3!=null)
listView3.setAdapter(listAdapter3);}
catch(Exception e)
{
e.printStackTrace();
}
txt = query;
if (alist2.size() < epp) {
next.setText("");
}
if (pageno == 0)
prev.setVisibility(View.GONE);
}
}
return response;
}
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isFile()){
return true;
}
else{
return false;
}
}
};
class brs extends AsyncTask<Object ,Object ,Object >
{
//context=getActivity().getBaseContext();
Activity context;
public brs(Activity context)
{
loadingDialog = new ProgressDialog(context);
this.context=context;
}
@Override
protected void onPreExecute()
{
//loadingDialog= new ProgressDialog(getActivity().getBaseContext());
loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
loadingDialog.setMessage("Please wait...");
loadingDialog.setCancelable(false);
loadingDialog.show();
super.onPreExecute();
};
@Override
protected Object doInBackground(Object... params)
{
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US"))
{
return browseLetter(txt,context, "en", "hi");
}
else
{
return browseLetter(txt,context, "hi", "en");
}
}
protected void onPostExecute(Object result)
{
try{
if(alist1!=null)
{
//list1_global=alist1.get(0);
Log.v("---------------list1--------------", "list1"+alist1);
Browse_Adapter2 listAdapter2 = new Browse_Adapter2(context,R.layout.browse_list_item, alist1);
if(listAdapter2!=null)
listView2.setAdapter(listAdapter2);}
else{
Log.v("--------------list1--------------", "list1"+alist1);
}
//loadingDialog.dismiss();
}
catch(Exception e)
{
e.printStackTrace();
}
new brs_wd(getActivity(),pageno,list1_global).execute();
//loadingDialog.dismiss();
}
}
class brs_wd extends AsyncTask<Object ,Object ,String>
{
int pg;
Activity context;
String list2word;
public brs_wd(Activity context,int page_no,String list2word)
{
//loadingDialog = new ProgressDialog(context);
this.context=context;
this.pg=page_no;
if(list_flag)
{
this.list2word=txt;
}
else{
this.list2word=list2word;
}
}
@Override
protected void onPreExecute()
{
/*//loadingDialog= new ProgressDialog(getActivity().getBaseContext());
loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
loadingDialog.setMessage("Please wait...");
loadingDialog.setCancelable(false);
loadingDialog.show();*/
super.onPreExecute();
};
@Override
protected String doInBackground(Object... params)
{
if (Locale.getDefault().toString().equalsIgnoreCase("en")||Locale.getDefault().toString().equalsIgnoreCase("en_IN")||Locale.getDefault().toString().equalsIgnoreCase("en_US"))
{
return browseWord(list2word, context, "en", "hi", epp, pg,list2word);
}
else
{
return browseWord(list2word, context, "hi", "en", epp, pg,list2word);
}
}
protected void onPostExecute(String query)
{
try{
Log.d("-------------List2--------", alist2+"");
if(alist2!=null){
Browse_Adapter2 listAdapter3 = new Browse_Adapter2(context, R.layout.browse_list_item, alist2);
if(listAdapter3!=null)
listView3.setAdapter(listAdapter3);
txt = query;
if (alist2.size() < epp) {
next.setText("");
} else {
next.setText("Next>>");
}
if (pageno == 0)
prev.setVisibility(View.GONE);}
else{
Log.d("-------------------List2--------------", "empty"+alist2);
}
}
catch(Exception e)
{
e.printStackTrace();
}
loadingDialog.dismiss();
}
}
}
帮助我。