2016-07-09 5 views
-1

나는 안드로이드에 스도쿠를 구축하고, 그래서 내가 어떻게 예에 대한 모든 textviews 를 등록 않습니다어떻게 안드로이드에 81 textviews를 등록합니까?

button1=(Button)findViewByid(R.id.btn1) 

내가 모든 TextView

+1

질문을 향상하십시오 - 당신이 TextView's'에 대해 이야기하고 아직 코드 예제는'버튼을 사용하기 때문에 조금 혼란 's? 어쨌든, 모든'TextView' /'Button's를 추가하고 어떤 일이 일어나는지보아야합니다. 이상적인 이유는 레이아웃 XML 파일에'OnClickListener'를 정의해야만하는 이유가 아니라면'findViewById (resource-id)'를 할 필요가 없다는 것입니다. – ishmaelMakitla

+0

'TextView's 만 ?? .. 호기심에서 벗어난 다음, 어떻게 그리드에 번호를 입력 할 계획입니까? – Sanoop

+0

더 쉬운 자습서로 시작하는 것이 어떻습니까? – Eiko

답변

0

시작할 필요가 없습니다 등록 (81) 등의 문을 작성해야합니까 이 ID를 사용합니다. XML로보기 (컨테이너)를 만들고 ID를 사용하지 않고 for 루프를 사용하여 채울 수 있습니다. 나중에 컨테이너의 색인을 통해 액세스 할 수 있습니다.

도움이 되었기를 바랍니다.

대신 텍스트 뷰의 어댑터와 그리드 뷰를 사용할 수 있습니다
1

그리드 항목

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="13sp" 
     android:text="@string/country_name" 
     android:textColor="@color/accent_color" 
     android:gravity="center" 
     android:paddingBottom="8dp" 
     android:paddingTop="8dp" 
     android:background="@color/color_primary_dark"/> 

</RelativeLayout> 

어댑터 클래스

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> { 

private List<ItemObject> itemList; 
private Context context; 

public RecyclerViewAdapter(Context context, List<ItemObject> itemList) { 
    this.itemList = itemList; 
    this.context = context; 
} 

@Override 
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { 

    View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, null); 
    RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView); 
    return rcv; 
} 

@Override 
public void onBindViewHolder(RecyclerViewHolders holder, int position) { 
    holder.textView.setText(itemList.get(position).getName()); 
} 

@Override 
public int getItemCount() { 
    return this.itemList.size(); 
} 



public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener{ 

public TextView textView; 

public RecyclerViewHolders(View itemView) { 
    super(itemView); 
    itemView.setOnClickListener(this); 
    textView = (TextView)itemView.findViewById(R.id.textView); 
} 

    @Override 
    public void onClick(View view) { 
    Toast.makeText(view.getContext(), "Clicked Position = " + getPosition(), Toast.LENGTH_SHORT).show(); 
} 
} 
} 

활동 클래스

public class MainActivity extends ActionBarActivity { 

private GridLayoutManager lLayout; 

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

    Toolbar topToolBar = (Toolbar)findViewById(R.id.toolbar); 
    setSupportActionBar(topToolBar); 
    topToolBar.setLogo(R.drawable.logo); 
    topToolBar.setLogoDescription(getResources().getString(R.string.logo_desc)); 

    List<ItemObject> rowListItem = getAllItemList(); 
    lLayout = new GridLayoutManager(MainActivity.this, 4); 

    RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view); 
    rView.setHasFixedSize(true); 
    rView.setLayoutManager(lLayout); 

    RecyclerViewAdapter rcAdapter = new RecyclerViewAdapter(MainActivity.this, rowListItem); 
    rView.setAdapter(rcAdapter); 
} 



private List<ItemObject> getAllItemList(){ 

    List<ItemObject> allItems = new ArrayList<ItemObject>(); 
    allItems.add(new ItemObject("1"); 
    allItems.add(new ItemObject("2"); 
    allItems.add(new ItemObject("3"); 

    return allItems; 
} 
} 
1

당신이 할 수있는 앱이 실행될 때 자바 코드로보기를 추가하십시오.

당신은 혼자가 XML 파일에 텍스트 뷰의 XML 문을 작성하고 다음을 부풀려 수 있습니다. 당신은 이미 기준을 가지고 있기 때문에

이 방법을 사용하면, 뷰 ID를 필요가 없습니다.

grid.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    ... 
    /> 

MyActivity.java

ArrayList<TextView> list = new ArrayList<>(); 
for (int i = 0; i < 81; i++) { 
    TextView view = (TextView)LayoutInflater.from(ItemDragAndSwipeUseActivity.this).inflate(R.layout.grid, null); 
    list.add(view); 
} 
// then attach these views to the layout with addView()   
관련 문제