سؤال

أريد أن يعرض الفصل أدناه بعض طرق عرض النص/الأزرار/المغازل، وكذلك ListView الذي يحتوي على بيانات تم تحليلها.لكن عرض القائمة/المحول/الإضافة يسبب بعض المشاكل.هذا هو الخطأ الذي أتلقىه:

java.lang.UnsupportedOperationException:addView(View, LayoutParams) غير مدعوم في AdaptorView

لدي شعور بأن الأمر يتعلق بملفات xml الخاصة بي، لكنني لست متأكدًا تمامًا.هذا هو الكود الخاص بي:

public class StatisticsScreen extends ListActivity{

private List<Message> messages; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.statisticsscreen);

    loadFeed();

    //other textviews and listeners added
}

private void loadFeed() {

    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getTitle());
        }
        ArrayAdapter<String> adapter = 
        new ArrayAdapter<String>(this, R.layout.xmldatarow,titles);

        this.setListAdapter(adapter);           
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }       
}

شاشة الإحصائيات الخاصة بي XML:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">

<LinearLayout android:id="@+id/statsviewlayout"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@color/black">
    //other layouts/textviews/buttons added
    <include  layout="@layout/xmllayout" android:id="@+id/xmllist" />

</LinearLayout>
</ListView>

xmllayout XML:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ListView android:id="@+id/xmllist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>
    </LinearLayout>

xmldatarow عبارة عن عرض نصي بسيط.

يحرر:

حسنًا، لقد قمت بتحديث بعض الملفات وظهر لي خطأ استثناء في وقت التشغيل:

يجب أن يحتوي المحتوى الخاص بك على ListView وخاصيته هي "android.R.id.list".

وهنا الملفات المحدثة:

فصل:

setContentView(R.layout.statisticsscreen);    
loadFeed();        
getListView().addHeaderView(View.inflate(this, R.layout.xmllayout, null));

private void loadFeed() {
    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getDate());
        }
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, R.layout.xmldatarow,titles);
        this.setListAdapter(adapter);
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }       
}

يحتوي نمط statsscreenlayout الخاص بي على جميع التخطيطات الخطية مع طرق عرض النص وما إلى ذلك.وحذفت منه هذا:

<include  layout="@layout/xmllayout" android:id="@+id/xmllist" />

ثم التخطيطان الآخران الخاصان بي هما عرض نصي بسيط (xmldatarow) وعرض قائمة (xmllayout).لذا فقط للتوضيح، لا يوجد أي عرض قائمة أو أي "تضمين" في تخطيط شاشة الإحصائيات الخاصة بي.

اي نصيحه؟شكرًا

هل كانت مفيدة؟

المحلول

لا يمكنك تضخيم طرق العرض مباشرة في عرض قائمة كهذا.أعتقد أنك قد تكون تبحث عنه ListViewaddHeaderView أو addFooterView طُرق.تأكد من الاتصال بهم قبل الاتصال setListAdapter.

يحرر:لتوضيحها بالكامل:على افتراض أنك تريد statsviewlayout في أعلى قائمتك:لا تضع LinearLayout مباشرة في ListView عنصر (ListViews لا ينبغي أن يكون لها أطفال).ضعه في أ متفرق ملف xml (على سبيل المثال، statsview.xml) وافعل شيئًا مثل هذا في onCreate الخاص بك:

getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null));

انظر أيضا هذا القديم الروبوت-مبتدئين آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top