0
public class SearchRecipe extends AppCompatActivity { 

ArrayList<Recipe> lst=new ArrayList<Recipe>(); 
    private ListView listView; 
    ProgressDialog pg; 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search_recipe); 
     pg = ProgressDialog.show(this, "Loading", "please wait", true); 
     getDataBase3(); 
    } 

    public void getDataBase3() { 
     myFirebaseRef.child("Recipes").addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        Recipe recipe = snapshot.getValue(Recipe.class); 
        lst.add(recipe); 
       } 
       init(); 
      } 
      @Override 
      public void onCancelled(FirebaseError firebaseError) { 
       Toast.makeText(SearchRecipe.this, "Failed", Toast.LENGTH_SHORT).show(); 
      } 

     }); 
    } 

    private void init() { 
     listView= (ListView) findViewById(R.id.listview_searchRecipe); 
     UsersAdapter adapter = new UsersAdapter(this, lst); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent intent=new Intent(SearchRecipe.this,ShowRecipe.class); 
       intent.putExtra("recipeName",lst.get(position).getRecipeName()); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
     pg.dismiss(); 
    } 

    public class UsersAdapter extends ArrayAdapter<Recipe> { 
     public UsersAdapter(android.content.Context context, ArrayList<Recipe> names) { 
      super(context, 0, names); 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      Recipe user = getItem(position); 
      if (convertView == null) { 
       convertView = LayoutInflater.from(getContext()).inflate(R.layout.recipe_row_layout, parent, false); 
       TextView tvname= (TextView) convertView.findViewById(R.id.recipeTV2_row); 
       TextView tvlike= (TextView) convertView.findViewById(R.id.likes_row); 
       TextView tvdislike= (TextView) convertView.findViewById(R.id.dislike_row); 

       tvname.setText(user.getRecipeName()); 
       tvlike.setText(""+user.getLikes()); 
       tvdislike.setText(""+user.getDislikes()); 
      } 
      return convertView; 
     } 

    } 

lstの動作の塗りつぶし - 値と正しいものがあります。 リストが約8位になると、ListView内の名前の置換が開始されます(リストの番号8が "dog"で、番号1が "cat"の場合は数字8が表示され、数字1は両方とも "cat" 1でクリックすると1になり、8でクリックすると8になります)ListViewアダプタの問題

問題はListViewの表示にあります。間違った値が表示されますあなたはそれらをクリックすると、正しい場所に移動します。

ありがとうございます。

答えて

0

リストビューだけRecyclerViewを使用し、推奨されません(それでも問題が解決されようとしている場合 - 、それを投稿し)、使用する方法軽く、easyerであるGoogleによる

RecyclerViewサンプル:https://developer.android.com/training/material/lists-cards.html

検索可能とexpandable recycerviewのサンプル(ダイアログコンテナ内では、同じアイディアです):https://github.com/WithoutCaps/DialogsCheatSheet

関連する問題