单击LISTVIEW时无法获得正确的数据

时间:2014-01-16 08:03:02

标签: android android-listview android-asynctask progressdialog

我的片段中有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();    
                }

            }

}

帮助我。

0 个答案:

没有答案