سؤال

أقوم باسترداد قائمة بالكائنات من URL JSON وعرضها مثل القائمة عن طريق إضافة حقل تسمية ومقطع. الآن ، أريد أن أجعل كل تسمية قابلة للنقر بحيث يتم إعادة توجيه كل تسمية إلى عنوان URL منفصل. عند النقر فوق التسمية ، يجب فتح شاشة منفصلة مع بيانات JSON لعنوان URL المقابل. لذلك ، هل يمكن لأي شخص أن يخبرني كيف أحقق ذلك. سأكون ممتنًا حقًا إذا حصلت على بعض رمز عينة حول كيفية القيام بذلك ... إليك بعض رمز النماذج الذي قمت به ...

public VerticalFieldManager showShoppingList(){
        try {
            jsArrShpList=new JSONArray(strShopping);
            totalList= jsArrShpList.length();
            for(int i=0;i<totalList;i++){
                 String strAlert=jsArrShpList.get(i).toString();
                 JSONObject joAlert=new JSONObject(strAlert);
                 String shoppingList = joAlert.get("CategoryName").toString();
                 LabelField shops  = new LabelField(shoppingList);
                 VerticalFieldManager vfmListRow=new VerticalFieldManager();
                 vfmListRow.add(shops);
                 vfmListRow.add(new SeparatorField());
                 vfmShpList.add(vfmListRow);

            }

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

المحلول

بدلاً من استخدام مجموعة من Labelfields التي لا تقبل عادة التركيز أو النقر فوق الأحداث ، لماذا لا تستخدم أ LISTFIELD على الشاشة؟ يبدو أن هذا أكثر مما تبحث عنه.

إذا كنت ترغب في الذهاب مع نهج Labelfield ، فستحتاج إلى القيام ببعض الأشياء. أولاً ، عند إنشاء Labelfield الخاص بك ، استخدم Field.FOCUSABLE الأسلوب بحيث يقبل التركيز:

LabelField shops  = new LabelField(shoppingList, Field.FOCUSABLE);

الآن ، نظرًا لأن حقل Labelfield لن يتصل بمستمع تغيير إذا قمت بإعداد واحد ، فستحتاج إلى الاستماع إلى أحداث النقر والأحداث الرئيسية في مدير الوالدين. نظرًا لأن هذه الأحداث النقر أو الأحداث الرئيسية يمكن أن تكون لأي حقل في المدير ، فأنت بحاجة إلى التحقق من الحقل الذي يتم التركيز عليه عند حدوث الحدث ، وتشغيل أي معالج مناسب بناءً على الحقل في التركيز.

مثال رمز:

VerticalFieldManager vfmListRow = new VerticalFieldManager() {
    protected boolean navigationClick(int status, int time) {
        Field field = getFieldWithFocus();
        if (field != null && field.equals(shops)) {
            System.out.println("shops field clicked");
            return true;
        }
        return super.navigationClick(status, time);
    }

    protected boolean keyChar(char key, int status, int time) {
        Field field = getFieldWithFocus();
        if (key == Characters.ENTER && field != null && field.equals(shops)) {
            System.out.println("shops field clicked");
            return true;
        }
        return super.keyChar(key, status, time);
    }
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top