2013-03-03 147 views
0

所以我在gridview中有图像。这些图像显示在一个活动中。点击其中一个图像时,该图像将启动新的活动。在此活动中,如果用户输入正确答案,则开始新活动,表明答案正确。在用户输入正确答案之后,我想用gridwiew中的复选标记将此图像设置得更加透明。如果用户再次点击这个正确的视图,我想显示相同的活动,表明它解决了正确的。我怎样才能做到这一点?在gridview中设置图像为透明

这里是我的活动包含网格视图:

public class LogoSelectionActivity extends Activity { 
. 
. 
gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

      Intent intent = new Intent(LogoSelectionActivity.this, LogoActivity.class); 
      intent.putExtra ("clicked_position", position); 
      startActivity(intent); 
} 

这里是我的活动,其中用户进行输入:

public class LogoActivity extends Activity{ 

EditText text; 
Button check; 
Boolean a; 
int id; 
Names name; 
@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_logo); 
    check = (Button) findViewById(R.id.Check_button); 
    text = (EditText) findViewById(R.id.editText1); 
    ImageView view = (ImageView)findViewById(R.id.imageView1); 
    final ImageView incorrect = (ImageView)findViewById(R.id.incorrect); 
    switch (getIntent().getIntExtra ("clicked_position", -1)) 
    { 
     case 0: 
     view.setImageResource(R.drawable.adese); 
     id = R.drawable.adese; 
     break; 
     case 1: 
     view.setImageResource(R.drawable.birvar); 
     id = R.drawable.birvar; 
     break; 
     case 2: 
     view.setImageResource(R.drawable.agaoglu); 
     break; 
     case 3: 
      view.setImageResource(R.drawable.akinsoft); 
      break; 
     default: 
     view.setImageResource(R.drawable.afra); 
     id = R.drawable.afra; 
    } 
    name = Names.forDrawable(id); 
    check.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      a=name.isCorrect(text.getText().toString()); 
      if(a==true){ 
      Intent intent = new Intent(LogoActivity.this, CorrectActivity.class); 
      startActivity(intent); 
      } 
      else{ 
       incorrect.setVisibility(0); 
       incorrect.setVisibility(4); 
      } 
     } 
     }); 
    } 
} 

我希望我能清楚地解释我的意图。

回答

1

有很多方法可以做到这一点。因为这不是问题,所以您需要在您的项目中使用这些功能。

根据我的逻辑我给你一个解决方案。

步骤:

  1. 创建您的项目在网格视图的长度与缺省值为一个静态数组是0

    static int[] items = {0,0,0,...}; 
    
  2. 现在getView梅索德网格视图与检查值根据阵列中的位置,如果它是0,那么它将看起来像正常,否则它会看起来不同(这里你想透明与复选框,这将通过添加一个更多的图像上得到它。)

    If(items[position] == 0){ 
    
    }else{ 
    
    } 
    
  3. 现在,当用户轻敲任何图像和导航到其他屏幕(假设活动B)从该阵列的位置的该时间通值,并且在活动B的OnCreate()检查。

    gridview.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
    
        Intent intent = new Intent(LogoSelectionActivity.this, LogoActivity.class); 
        intent.putExtra ("clicked_position", position); 
        intent.putExtra ("answered_or_not", items[position]); 
    
        startActivity(intent); 
    } 
    
  4. 如果回答装置如果它的值是1,那么相应地显示其他明智,因为它是。

  5. 而当它的用户给出答案未答复的问题,使其值1在该数组中。

我希望它会帮助你可以询问是否有任何问题。

+0

它似乎工作。我尝试了一个小例子。如果我在构造整个代码时遇到问题,我会再次问你是否可以。感谢您的时间。 – ocry 2013-03-03 12:52:42

+0

如果我点击了已回答的视图,我会得到表明该信息正确的活动。它工作正常。但是,如果我关闭该应用程序并重新打开它,则所有这些应用程序都会重置并以默认值开始。我怎样才能做到永久? – ocry 2013-03-03 13:03:10

+0

ohh为此你必须选择(1)共享首选项和(2)保存在数据库中。 – 2013-03-04 03:43:19