2017-07-16 48 views
1

我想製作一款需要你猜數字的遊戲。我讓用戶選擇他們想要的數字號碼。如何根據您在哪些活動中隱藏CustomAdapter中的元素?

我的自定義適配器是最初爲3位數字構建的,當用戶選擇2位數字時,一切都正常,但是運行應用程序時digit_3總是0,我只想隱藏它,我該怎麼做?

See screenshot for how it looks like, I want to hide the marked part when user enters the 2 digit activity

繼承人的適配器:

package com.apphorizon.guessthenumber; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import java.util.ArrayList; 


public class ListAdapter extends ArrayAdapter<List> { 

    public ListAdapter(Context context, ArrayList<List> arrayList) { 
     super(context, 0, arrayList); 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View listItemView = convertView; 
     if (listItemView == null) { 
      listItemView = LayoutInflater.from(getContext()).inflate(
        R.layout.list_item, parent, false); 
     } 


     List currentItem = getItem(position); 

     TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view); 
     num1View.setText(String.valueOf(currentItem.getNum1())); 

     TextView num2View = (TextView)listItemView.findViewById(R.id.num_2_view); 
     num2View.setText(String.valueOf(currentItem.getNum2())); 

     TextView num3View = (TextView) listItemView.findViewById(R.id.num_3_view); 
     num3View.setText(String.valueOf(currentItem.getNum3())); 

     TextView correctPositionView = (TextView)listItemView.findViewById(R.id.correct_position_view); 
     correctPositionView.setText(String.valueOf(currentItem.getCorrectPosition())); 

     TextView wrongPositionView = (TextView)listItemView.findViewById(R.id.wrong_position_view); 
     wrongPositionView.setText(String.valueOf(currentItem.getWrongPositionCorrectNumber())); 

     return listItemView; 
    } 
} 

而這裏的List類

package com.apphorizon.guessthenumber; 

public class List { 

    private int mNum1; 
    private int mNum2; 
    private int mNum3; 
    private int mCorrectPosition; 
    private int mWrongPositionCorrectNumber; 

    public List(int num1, int num2, int num3, int correctPosition, int wrongPositionCorrectNumber){ 
     mNum1 = num1; 
     mNum2 = num2; 
     mNum3 = num3; 
     mCorrectPosition = correctPosition; 
     mWrongPositionCorrectNumber = wrongPositionCorrectNumber; 
    } 

    public List(int num1, int num2, int correctPosition, int wrongPositionCorrectNumber){ 
     mNum1 = num1; 
     mNum2 = num2; 
     mCorrectPosition = correctPosition; 
     mWrongPositionCorrectNumber = wrongPositionCorrectNumber; 
    } 

    public int getNum1(){ 
     return mNum1; 
    } 

    public int getNum2(){ 
     return mNum2; 
    } 

    public int getNum3(){ 
     return mNum3; 
    } 

    public int getCorrectPosition(){ 
     return mCorrectPosition; 
    } 

    public int getWrongPositionCorrectNumber(){ 
     return mWrongPositionCorrectNumber; 
    } 
} 

該應用程序目前只定制的2和3位數字,但增加更多!

+0

是否允許在任何地方使用? – EdmDroid

+0

是的,0是2/3數字中可能的數字。該示例本身在其他地方使用了0。 「01」是正確的號碼 – Abhijeet

回答

0

如果想要將最後一個文本視圖的可見性設置爲不可見,如果它是2位數字。

所以我建議你在List這個課上作以下修改。

private int num1 = -1; 
private int num2 = -1; 
private int num3 = -1; 

這樣,如果有一個num1num2num3是-1,你可以在你的適配器

if(currentItem.getNum1() != -1) { 
    TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view); 
    num1View.setText(String.valueOf(currentItem.getNum1())); 
} 
else listItemView.findViewById(R.id.num_1_view).setVisibility(View.INVISIBLE); 

同樣,對於num2num3各自的文本鑑於這種變化看不見。

該應用程序目前僅針對2位和3位數字定製,但尚未添加更多!

通過此更改,您將可以實現添加更多的目標,因爲它也支持1位數字。如果您不想要1位數字,請不要將上面的代碼應用於num1,僅適用於num2num3

+0

是的,解決了它!雖然它也刪除了綠色背景,但現在需要修復它。謝謝。編輯:使視圖完成,而不是INVISIBLE也解決了這個問題:) – Abhijeet

+0

然後將可見性設置爲'View.GONE' – EdmDroid