2017-03-02 6 views
0

ListAdapter.java繰り返されるアンドロイド - GridViewの中のカードの項目が二回

public class ListAdapter extends ArrayAdapter<String> 
{ 
    private Activity context; 
    private int[] icon; 
    private String[] title; 

    public ListAdapter(Activity context, int[] icon, String[] title) 
    { 
    super(context, R.layout.list_item, title); 
    this.context = context; 
    this.icon = icon; 
    this.title = title; 
    } 

    public View getView(final int position, View view, final ViewGroup parent) 
    { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.list_item, null, true); 
    try 
    { 
     TextView txtTitle = (TextView) rowView.findViewById(R.id.txtTitle); 
     ImageView imgIcon = (ImageView) rowView.findViewById(R.id.imgIcon); 
     txtTitle.setText(title[position]); 
     imgIcon.setBackgroundResource(icon[position]); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     return rowView; 
    } 
}} 

MainActivity.java
このカードのイベントでは、サービスに置き換えられます。位置を再シャッフルすると、変更がアプリケーションに反映されますが、アプリケーションを再び実行すると、ギャラリーはサービスに置き換えられます。

public class MainActivity extends AppCompatActivity 
{ 
    String[] title = { 
     "Services" , 
     "Solutions", 
     "Customers", 
     "Events", 
     "Gallery", 
     "Contact Us" 
    }; 

int[] icon = { 
     R.drawable.services_icon, 
     R.drawable.solution_icon, 
     R.drawable.customer_icon, 
     R.drawable.event_icon, 
     R.drawable.gallery_icon, 
     R.drawable.contact_us_icon 
}; 

    HomeGrid adapter = new HomeGrid(MainActivity.this, title, icon, back); 
    grid = (GridView) findViewById(R.id.grid); 
    grid.setAdapter(adapter); 
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      switch (title[position]) { 
       case "Services": 
        Intent i1 = new Intent(MainActivity.this, Listing.class); 
        startActivity(i1); 
        break; 
       case "Solutions": 
        //Intent i2 = new Intent(MainActivity.this, Listing.class); 
        //startActivity(i2); 
        Toast.makeText(MainActivity.this, "You Clicked at " + title[position], Toast.LENGTH_SHORT).show(); 
        break; 
       case "Customers": 
        Toast.makeText(MainActivity.this, "You Clicked at " + title[position], Toast.LENGTH_SHORT).show(); 
        break; 
       case "Gallery": 
        Toast.makeText(MainActivity.this, "You Clicked at " + title[position], Toast.LENGTH_SHORT).show(); 
        break; 
       case "Events": 
        Intent i3 = new Intent(MainActivity.this, Form.class); 
        startActivity(i3); 
        break; 
       case "Contact Us": 
        Toast.makeText(MainActivity.this, "You Clicked at " + title[position], Toast.LENGTH_SHORT).show(); 
        break; 
     } 
     } 
    }); 
} 
+0

「ホームグリッド」とは何ですか? – njzk2

+0

'inflater.inflate(...、true)' - > 'inflater.inflate(...、false)'あなたはまだビューを親にまだ貼り付けたくありません。グリッドはそれを処理します。 – njzk2

答えて

0

これを使用してください。

public class ListAdapter extends ArrayAdapter<String>{ 
    private Activity context; 
    private int[] icon; 
    private String[] title; 
    private LayoutInflater inflater; 
    public ListAdapter(Activity context, int[] icon, String[] title) 
    { 
     super(context, R.layout.list_item, title); 
     this.context = context; 
     this.icon = icon; 
     this.title = title; 
     inflater = LayoutInflater.from(context); 
} 
public View getView(final int position, View view, final ViewGroup parent) 
{ 
    view= inflater.inflate(R.layout.list_item, parent, false); 
    try 
    { 
    TextView txtTitle = (TextView) view.findViewById(R.id.txtTitle); 
    ImageView imgIcon = (ImageView) view.findViewById(R.id.imgIcon); 
    txtTitle.setText(title[position]); 
    imgIcon.setBackgroundResource(icon[position]); 
    } 
    catch (Exception e) 
    { 
    e.printStackTrace(); 
    } 
finally 
{ 
    return view; 
    } 
} 
} 
+0

Vaibhaviありがとうございました –

+0

あなたはあなたが変更したもの、なぜあなたはその問題だと思ったのか、あなたのソリューションはどのように問題を解決すると思いますか? – njzk2

+0

でも、私は論理を理解することができませんでしたが、それが私の問題を解決しました。説明は将来このような問題を解決するのに役立ちます。 –

関連する問題