2011-04-05 12 views
9
void init() 
{ 
    intcolumnwidth1 = int_scr_wd*55; 
    intcolumnwidth1 = intcolumnwidth1/100; 
    for (int i = 0; i < strarr.length-1; i++) 
    { 
     strinarr = fun1.split(strarr[i].trim(),"^"); 
     tr1 = (TableRow) new TableRow(this); 
     txt1=new TextView(this); 
     txt1.setWidth(intcolumnwidth1); 
     txt1.setText(strinarr[0]); 
     tr1.addView(txt1); 
     tl.addView(tr1,new TableLayout.LayoutParams(layoutParams)); 
    } 
} 

परिदृश्य यह है कि जब मैं इस पृष्ठ को खोलता हूं तो यह गतिशील रूप से तालिका लेआउट में पंक्तियों को जोड़ता है ... लेकिन यदि कुछ समय बाद डेटाबेस में डेटा बदलता है ... जब मैं रीफ्रेश बटन पर क्लिक करता हूं तो यह तालिका लेआउट में पुराने डेटा के बाद नया डेटा जोड़ता है ... मुझे केवल टेक्स्ट लेआउट में पहले से मौजूद टेक्स्टव्यू को रीफ्रेश या डिलीट करने का समाधान है ...एंड्रॉइड में तालिका लेआउट में टेबल पंक्ति को कैसे हटाएं

thanx ..

उत्तर

13

प्रयास करें removeView

row = (TableRow)findViewById(R.id.row); 
table.removeView(row); 
+8

मुझे लगता है कि यह अत्यधिक संभावना नहीं है कि पंक्तियों स्थिर आईडी अगर वे कर रहे हैं होगा गतिशील रूप से जोड़ा गया। –

2

आपको हटाए जाने वाले टेक्स्टव्यू को जानने की आवश्यकता है। TextView को setId() का उपयोग करके एक अद्वितीय आईडी सेट करके या setTag() का उपयोग करके एक अद्वितीय टैग का उपयोग करके पहचाना जा सकता है।

इसे टेक्स्टव्यू टीवी = (टेक्स्ट व्यू) tr1.findViewByTag (अद्वितीय टैग) द्वारा पहचाना जा सकता है;

व्यू को हटाने के लिए हटाएं देखें।

6

अन्य समाधानों के लिए आपकी पंक्तियों को अद्वितीय आईडी रखने की आवश्यकता होती है।

वे अद्वितीय आईडी तो नहीं है, तो कैसे उपयोग करने के बारे:

tl.removeView(rowIndex); 

किसी भी मामले में, आप SimpleCursorAdapter या CursorAdapter का उपयोग कैसे करें, क्योंकि वे विशेष रूप से एक डेटाबेस की सामग्री प्रदर्शित करने के लिए तैयार कर रहे हैं सीखने की कोशिश करनी चाहिए एक सूची में क्वेरी। Binding to Data with AdapterView देखें।

9

मुझे एहसास है कि यह एक पुराना धागा है, लेकिन जब मैं एक सभ्य उत्तर के बिना इस पर आया तो मैं चौंक गया।

मैं इस तरह यह कार्य करें:

TableLayout table = (TableLayout) findViewById(R.id.myTable);  
table.removeAllViews(); 

कि इस मामले पंक्तियों और सब कुछ में बाल विचारों के सभी निकाल देंगे,। यह आपके विवरण से प्रतीत नहीं होता है कि आप केवल एक पंक्ति को हटाना चाहते हैं, लेकिन आप उन्हें हटाना चाहते हैं और फिर पंक्तियों को फिर से लोड करना चाहते हैं। उपरोक्त कोड हटाने का हिस्सा करेगा।

+0

धन्यवाद, मुझे यह चाहिए .. –

1

तालिका इस प्रयोग में

private List<View> listViewRow; 

if (listViewRow.size() > 0) { 
    for (View view : listViewRow) { 
     table.removeView(view); 
    } 
} 

for (int i = 0; i < myList.size(); i++) { 
    row.addView((new TextView(context).setText("Teste")), 0); 
    row.addView((new TextView(context).setText("Teste")), 1); 
    row.addView((new TextView(context).setText("Teste")), 2); 

    listViewRow.add(row); 
    table.addView(row, 1); 
} 
0

पंक्ति को हटाने के लिए इस कोड को देखो:

new Handler().postDelayed(new Runnable() { 
     public void run() { 
     TableRow row = (TableRow)table.getChildAt(i); 
     table.removeView(row); 
     } 
}, 100); 

मैं कहाँ - पंक्ति स्थिति है, जो आप हटाना चाहते हैं।

13

इस विधि को मैंने लिखा है कि पहले पंक्ति को छोड़कर सभी पंक्तियों को हटा दिया गया है। यह उपयोगी है अगर आप उदाहरण के लिए शीर्ष लेख पंक्ति को हटाने के लिए, नहीं करना चाहती:

private void cleanTable(TableLayout table) { 

    int childCount = table.getChildCount(); 

    // Remove all rows except the first one 
    if (childCount > 1) { 
     table.removeViews(1, childCount - 1); 
    } 
} 
2

मैं का उपयोग करें:

tl.removeView(tl.getChildAt(index)); 
+0

इस मुद्दे के उत्तर के साथ कुछ स्पष्टीकरण जोड़ें कि इस मुद्दे को वर्तमान समस्या को ठीक करने में ओपी की मदद कैसे करें –

संबंधित मुद्दे