2016-07-09 13 views
-1

Ich bin ein Sudoku in Android bauen, so wie melde ich alle Textviews für zB:Wie registriere ich 81 Textansichten in Android?

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

Do i 81, derartige Aussagen schreiben müssen alle TextView

+1

Sie bitte Ihre Frage verbessern - es ist ein wenig verwirrend, weil Sie 'TextView's sprechen und noch Ihr Codebeispiel wird' Knopf 's? In jedem Fall sollten Sie versuchen, all diese 'TextView's /' Buttons hinzuzufügen und zu sehen, was passiert. Idealerweise sollten Sie 'OnClickListener' in der Layout-XML-Datei definieren, so dass Sie' findViewById (Ressourcen-ID) 'nicht benötigen, es sei denn, es gibt einen zwingenden Grund dafür. – ishmaelMakitla

+0

Nur 'TextView's ?? .. Nur aus Neugier, wie planen Sie dann die Nummer ins Grid einzugeben? – Sanoop

+0

Warum nicht mit einfacheren Tutorials beginnen? – Eiko

Antwort

0

Sie haben sich nicht registrieren um IDs dafür zu verwenden. Sie können einfach eine Ansicht (Container) in XML erstellen und sie vollständig mit einer for-Schleife füllen, ohne IDs zu verwenden. Sie können danach über ihren Index im Container auf sie zugreifen.

Ich hoffe, das hat geholfen.

1

Sie Rasteransicht mit einem Adapter

Rasterelement

<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> 

Adapter Klasse

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(); 
} 
} 
} 

Aktivitätsklasse

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

können Sie anstelle von Textansichten verwenden Fügen Sie die Ansichten in Java-Code hinzu, wenn die Anwendung ausgeführt wird.

Sie können die XML-Anweisung Ihrer Textansicht nur in eine XML-Datei schreiben und sie dann aufblasen.

Auf diese Weise brauchen Sie die View-ID nicht, da Sie bereits eine Referenz haben.

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()   
Verwandte Themen