2014-08-28 13 views
0

如何在Android上使用Java添加复选框。当我添加一个boolean值以“CustomGrid.java”,然后将复选框添加到我的“MainActivity.java”的SDK告诉我如何使用Java代码在Android中将复选框添加到“Grid View”中

Item mismatch: cannot convert from int[] to boolean 

我试图在Java将它的一些方法,但我不是熟悉这个Java,我很新(大约4天)。这是我迄今所做的:

Mainactivity.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.res.Configuration; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.CheckBox; 
import android.widget.GridView; 
import android.widget.Toast; 


public static void main(String[] args) throws Exception { 
    int i=10; 
    boolean b = (i != 0); 

    System.out.println(b); 
} 

public class MainActivity extends Activity { 
    GridView grid; 
    String[] web = { 
     "Google", 
     "", 
     "Instagram", 
     "Facebook", 
     "Pinterest", 
     "Twitter", 
    } ; 


    int[] imageId = { 
     R.drawable.image1, 
     R.string.share, 
     R.drawable.image3, 
     R.drawable.image4, 
     R.drawable.image6, 
     R.drawable.image8, 
    }; 

    boolean check = { 
     R.id.checkbox1 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     CustomGrid adapter = new CustomGrid(MainActivity.this, web, imageId, check); 
     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) { 
       Toast.makeText(MainActivity.this, "You Clicked at " +web[+ position], Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

CustomGrid.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomGrid extends BaseAdapter{ 
    private Context mContext; 
    private final String[] web; 
    private final int[] Imageid; 
    private final boolean check; 
    public CustomGrid(Context c,String[] web,int[] Imageid,boolean check2){ 
     mContext = c; 
     this.Imageid = Imageid; 
     this.web = web; 
     this.check = check2; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return web.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 
      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.grid_single, null); 
      TextView textView = (TextView) grid.findViewById(R.id.grid_text); 
      CheckBox checkbox = (CheckBox) grid.findViewById(R.id.checkbox1); 
      ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image); 
      textView.setText(web[position]); 
      imageView.setImageResource(Imageid[position]); 
      checkbox.setChecked(check); 
     } else { 
      grid = (View) convertView; 
     } 

     return grid; 
    } 
} 

回答

1

如果您包括您的activity_main XML布局文件的复选框,然后(你的 '网格' 的GridView内),

CheckBox checkbox = (CheckBox)findViewById(R.id.'yourcheckboxid') 

或者您可以通过编程方式创建和添加复选框,

CheckBox checkbox = new CheckBox(); 
    LayoutParams checkbox_layoutparams = new GridView.LayoutParams(
     wrap_content, 
     wrap_content); 
    checkbox_layoutparams.addRule(GridView.'your rule')://add rules if need be 
    grid.addView(checkbox,checkbox_layoutparams); 

希望这有助于...

1

R.id.checkbox1

只是一个指向'checkbox1'CheckBox类型View的整数。因此,您收到的类型不匹配错误。

boolean check = { 
     R.id.checkbox1 

就需要看更多的东西是这样的:

CheckBox checkbox = (CheckBox) grid.findViewById(R.id.checkbox1); 
boolean check = checkbox.isChecked(); 
+0

谢谢你,但我可能做错了什么。我添加了“布尔检查= checkbox.isChecked();”但我的MainActivity.java不会检测到它,并提供相同的错误,以及那个,sdk警告我局部变量“检查”没有被使用(所以我认为它是因为MainActivity.java没有检测到它)什么出错了,并再次感谢您试图帮助 – user256272 2014-08-29 15:02:58

+0

我的回答不仅仅是一个解决方案的建议,而只是一个跳出我的错误。稍后我会看看你的代码,看看我能否给你更完整的帮助! – 2014-08-29 16:23:03

+0

谢谢! – user256272 2014-08-29 16:41:37

相关问题