2017-08-12 5 views
0

私は150個のデータで初期化しましたが、私のrecyclerviewが私のデータベースの最後の行だけを表示しているのは分かりません。 私はインターネット上で、さらにここでもSOを検索しましたが、解決策の1つが機能していません。あなたは私のrecyclerViewがデータベースの最後の行だけを表示している理由を理解するのに役立つでしょうか?皆さんにおかげさまで、ありがとうございました。RecyclerViewデータ最後の行を複数回表示する

あなたが私を助けてくれるかもしれません。ここに私のコードは次のとおりです。ここで

package com.example.frontaddress.matedesignc; 
     import android.database.Cursor; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     import android.support.v7.widget.LinearLayoutManager; 
     import android.support.v7.widget.RecyclerView; 
     import android.support.v7.widget.Toolbar; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.view.View; 
     import android.widget.AdapterView; 
     import android.widget.ArrayAdapter; 
     import android.widget.Spinner; 
     import android.widget.Toast; 
     import java.io.IOException; 
     import java.util.ArrayList; 
     import java.util.List; 
public class Customer_Activity extends AppCompatActivity { 

    private List<String> StateListArray =new ArrayList<String>(); 
    private List<String> StateList =new ArrayList<String>(); 
    private List<String> CityListArray ; 
    private List<String> CityList ; 
    private Spinner dropdown_state; 
    private Spinner dropdown_city; 
    private DBHandler DB = new DBHandler(this); 
    private static final String BUSINESSNAME = "bussiness_name"; 
    private static final String MOBILE = "mobile"; 
    private static final String ADDRESS = "address"; 
    private static final String ID = "id"; 
    private Toolbar toolbar; 
    private Customer_list_Adapter adapter; 
    private RecyclerView recyclerView_Customer; 
    //ProgressDialog pDialog = new ProgressDialog(this); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_customer_list); 
     toolbar = (Toolbar) findViewById(R.id.app_bar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     GetStateList(); } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_sub, menu); 
     return true; } 
    public void CustomerDetails(String state,String city) throws IOException { 


    try { 
    List<customer_search_information> data = null; 
    data = new ArrayList<>(); 
    customer_search_information current = new customer_search_information(); 
    Cursor RST_CSTInfo = DB.getRows("customer", "id,bussiness_name,mobile,address", " state='" + state + "' AND city='" + city + "'"); 

    while (!RST_CSTInfo.isAfterLast()) { 

     current.bussiness_name = RST_CSTInfo.getString(RST_CSTInfo.getColumnIndex(BUSINESSNAME)); 
     current.state = state; 
     current.city = city; 
     current.address = RST_CSTInfo.getString(RST_CSTInfo.getColumnIndex(ADDRESS)); 
     String Mob = RST_CSTInfo.getString(RST_CSTInfo.getColumnIndex(MOBILE)); 
     current.mobile_no = Mob; 

     current.e_mail = "[email protected]"; 
     current.id = RST_CSTInfo.getString(RST_CSTInfo.getColumnIndex(ID)); 
     // displayExceptionMessage(current.id+current.bussiness_name+current.state+current.city+current.address+current.mobile+current.email); 

     data.add(current); 
     RST_CSTInfo.moveToNext(); 

    } 


     recyclerView_Customer = (RecyclerView) findViewById(R.id.drawerListCustomer); 
     recyclerView_Customer.setHasFixedSize(true); 
     recyclerView_Customer.setHasFixedSize(true); 
     recyclerView_Customer.setLayoutManager(new LinearLayoutManager(this)); 
     adapter = new Customer_list_Adapter(this, data); 
     recyclerView_Customer.setAdapter(adapter); 


}catch (Exception e){ displayExceptionMessage(e.toString());} 

    } 
private void GetStateList() 
{ Cursor Customer= DB.getRows("customer","state", " 1 GROUP BY state"); 
    while(!Customer.isAfterLast()){ 
     String state=Customer.getString(Customer.getColumnIndex("state")); 
     StateList.add(state); 
     StateListArray.add(state); 
     Customer.moveToNext(); 
    } 
    dropdown_state = (Spinner)findViewById(R.id.SpnSrch_State); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(Customer_Activity.this, android.R.layout.simple_spinner_dropdown_item, StateListArray); 
    dropdown_state.setAdapter(adapter); 
    dropdown_state.setPrompt("Choose State "); 
    dropdown_state.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
      int item = dropdown_state.getSelectedItemPosition(); 
      String state =StateListArray.get(item); 
      dropdown_city=(Spinner) findViewById(R.id.SpnSrch_State); 
      Cursor RstCity= DB.getRows("customer","city", "state='"+state+"' GROUP BY city"); 
      CityListArray =new ArrayList<String>(); 
      CityList =new ArrayList<String>(); 
      while(!RstCity.isAfterLast()){ 

       String city=RstCity.getString(RstCity.getColumnIndex("city")); 
       CityList.add(city); 
       CityListArray.add(city); 
       RstCity.moveToNext(); 
      } 
      dropdown_city = (Spinner)findViewById(R.id.SpnSrch_City); 
      ArrayAdapter<String> cityadapter = new ArrayAdapter<String>(Customer_Activity.this, android.R.layout.simple_spinner_dropdown_item, CityListArray); 
      dropdown_city.setAdapter(cityadapter); 
      dropdown_city.setPrompt("Choose City "); 
      dropdown_city.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 

        int item = dropdown_state.getSelectedItemPosition(); 
        String state =StateListArray.get(item); 
        item = dropdown_city.getSelectedItemPosition(); 
        String city =CityListArray.get(item); 

        try { 
         CustomerDetails(state,city); 
        } catch (Exception e) { 
         displayExceptionMessage(e.toString()); 
         e.printStackTrace(); 
        } 
       } 
       @Override 
       public void onNothingSelected(AdapterView<?> parentView) { 
        displayExceptionMessage("Please Select State."); 
       } 
      }); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      displayExceptionMessage("Please Select City."); 
     } 
    }); 
} 

    public void displayExceptionMessage(String msg) { 
     //TextView Txterror=(TextView) findViewById(R.id.txterror); 
     Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     if (id == android.R.id.home) { 

      // NavUtils.navigateUpFromSameTask(this); 
     } 

     return super.onOptionsItementer code hereSelected(item); 
    } 

} 

は私のカスタムリストアダプタのコードは次のとおりです。

package com.example.frontaddress.matedesignc; 

     import android.Manifest; 
     import android.content.Context; 
     import android.content.Intent; 
     import android.content.pm.PackageManager; 
     import android.content.pm.ResolveInfo; 
     import android.net.Uri; 
     import android.support.v4.app.ActivityCompat; 
     import android.support.v7.widget.RecyclerView; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.ImageView; 
     import android.widget.TextView; 
     import android.widget.Toast; 
     import java.util.Collections; 
     import java.util.List; 
/** 
* Created by frontaddress on 10/08/17. 
*/ 
public class Customer_list_Adapter extends RecyclerView.Adapter<Customer_list_Adapter.CustomerViewHolder> { 
    private LayoutInflater inflater; 
    private Context contexts; 
    List<customer_search_information> Cst_data = Collections.emptyList(); 

    public Customer_list_Adapter(Context context, List<customer_search_information> data) { 
     inflater = LayoutInflater.from(context); 
     this.Cst_data = data; 
     // Toast.makeText(contexts, data.size(), Toast.LENGTH_LONG).show(); 
     this.contexts = context; 
    } 

    @Override 
    public CustomerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.content_search_staff, parent, false); 
     CustomerViewHolder holder = new CustomerViewHolder(view); 
     return holder; 
    } 

    @Override 
    public void onBindViewHolder(CustomerViewHolder holder, int position) { 
    try { 
    customer_search_information current = Cst_data.get(position); 
     Integer Pos=position; 


    holder.TxtBisinessName.setText(current.bussiness_name); 
    holder.TxtAddress.setText(current.address); 
    holder.Statecity.setText(current.state + "-" + current.city); 
    holder.Txt_Mobile.setText(current.mobile_no.toString()); 
    holder.TxtEmail.setText(current.e_mail); 
    }catch (Exception e) 
    { 
     Toast.makeText(contexts,e.toString(),Toast.LENGTH_SHORT).show(); 
    e.printStackTrace(); 
    } 
} 
    @Override 
    public int getItemCount() { 



     return Cst_data.size(); 
    } 
    class CustomerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     TextView TxtBisinessName; 
     TextView TxtAddress; 
     TextView Txt_Mobile; 
     TextView Statecity; 
     TextView TxtEmail; 
     ImageView ImgPhoneCall,ImgMailTo; 
     public CustomerViewHolder(View itemView) { 
      super(itemView); 
      TxtBisinessName = (TextView) itemView.findViewById(R.id.Txtbusiness_name); 
      Txt_Mobile = (TextView) itemView.findViewById(R.id.TxtMobile); 
      Statecity = (TextView) itemView.findViewById(R.id.Txtstatecity); 
      TxtAddress = (TextView) itemView.findViewById(R.id.Txtaddress); 
      TxtEmail=(TextView) itemView.findViewById(R.id.TxtEmail); 
      ImgPhoneCall = (ImageView) itemView.findViewById(R.id.ImgCallPhone); 
      ImgMailTo= (ImageView) itemView.findViewById(R.id.Imgmail); 



      ImgPhoneCall.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        customer_search_information current = Cst_data.get(getPosition()); 
        String MOBILE = current.mobile_no; 
        try { 

         if (ActivityCompat.checkSelfPermission(contexts,Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) 
         { 
          Toast.makeText(contexts, "Call Permission Not Granted ", Toast.LENGTH_LONG).show(); 

          return; 
         } 
         Intent callIntent = new Intent(Intent.ACTION_DIAL); 
         callIntent.setData(Uri.parse("tel:+91" + MOBILE)); 
         callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         contexts.startActivity(callIntent); 

        } 

        catch (Exception e){ 
         Toast.makeText(contexts,e.toString(),Toast.LENGTH_SHORT).show(); 
         e.printStackTrace(); 
        } 
       } 

      }); 
      /* TxtProfile.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        customer_search_information current = data.get(getPosition()); 
        String SID = current.id; 
        Intent intent = new Intent(contexts, StudentProfileActivity.class); 
        intent.putExtra("id", SID); 
        contexts.startActivity(intent); 
       } 

      });*/ 

      ImgMailTo.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        try { 
         // TODO Auto-generated method stub 
         customer_search_information current = Cst_data.get(getPosition()); 
         String EMAIL = current.e_mail; 
         String BName = current.bussiness_name; 
         Intent emailIntent = new Intent(Intent.ACTION_SEND); 
         emailIntent.putExtra(Intent.EXTRA_EMAIL, EMAIL); 
         emailIntent.putExtra(Intent.EXTRA_SUBJECT, ""); 
         emailIntent.setType("text/plain"); 
         emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hi,"+BName); 
         final PackageManager pm = contexts.getPackageManager(); 
         final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0); 
         ResolveInfo best = null; 
         for (final ResolveInfo info : matches) 
          if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) 
           best = info; 
         if (best != null) 
          emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name); 
         contexts.startActivity(emailIntent); 
        } 
        catch (Exception e){ } 
       } 

      }); 
     } 

     @Override 
     public void onClick(View v) { 
      int ID=v.getId(); 
      customer_search_information current=Cst_data.get(getPosition()); 
      String SID=current.id; 
      // Toast.makeText(contexts,"Item Clicked Profile: "+ v.getId(), Toast.LENGTH_SHORT).show(); 
      // Intent intent = new Intent(contexts, StudentProfileActivity.class); 
      // intent.putExtra("id", SID); 
      // contexts.startActivity(intent); 


     } 



    } 

} 

答えて

0

私は問題がこれを試す代わりに

while(!RST_CSTInfo.isAfterLast()){ 

... 
.. 

RST_CSTInfo.moveToNext(); 
} 

で、ここだと思う....

do(RST_CSTInfo.movetofirst()){ 

// your logic 

}while(cursor.movetonext()) 
+0

こんにちは、ありがとうございます。私はデバッグをステップバイステップで試し、すべてのレコードが正しくバインドされていることを確認します。スピナーは正しくレコードを取得しています。 –

関連する問題