2015-05-18 8 views
0

Итак, я пытаюсь получить ссылку на макет xml из класса простого виджета, который я сделал.Ссылка на макет xml внутри класса виджета

Итак, мой виджет содержит ImageView и два TextViews.I добавит код для этого виджета, так что никто не запутается.

public class Item extends LinearLayout{ 

TextView tv1,tv2; 
ImageView img; 


public Item(Context context,int resid, String t1, String t2) { 
    super(context); 

    setOrientation(HORIZONTAL); 

    setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

    img = new ImageView(context); 
    tv1 = new TextView(context); 
    tv2 = new TextView(context); 

    img.setBackgroundResource(resid); 
    img.setVisibility(View.VISIBLE); 
    img.setLayoutParams(new ViewGroup.LayoutParams(200, 200)); 

    tv1.setText(t1); 
    tv1.setTextSize(15); 
    tv1.setGravity(Gravity.CENTER); 
    tv1.setLayoutParams(new ViewGroup.LayoutParams(250, 100)); 

    tv2.setText(t2+"lei"); 
    tv2.setTextSize(15); 
    tv2.setGravity(Gravity.CENTER); 
    tv2.setLayoutParams(new ViewGroup.LayoutParams(250,100)); 

    tv1.setBackgroundColor(Color.GREEN); 
    tv2.setBackgroundColor(Color.BLUE); 

    addView(img); 
    addView(tv1); 
    addView(tv2); 
} 

Итак, как вы можете видеть, что есть clickListener добавлено для каждого «Пункта» .Что я хочу сделать, это, чтобы иметь возможность ссылаться на макет XML, который является второй активностью, так что я могу манипулировать тем, что находится в этом макете внутри этого виджета.

класс Второе мероприятие по:

public class Final extends Activity { 

LinearLayout fl; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.final_layout); 
    View rootView = getWindow().getDecorView().findViewById(android.R.id.content); 

    fl = (LinearLayout) rootView.findViewById(R.id.fl); 

} 

}

XML-файл для этой второй деятельности:

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

</LinearLayout> 

Итак, еще раз, чтобы подвести итог, я хочу, чтобы иметь возможность чтобы добавить материал к этому второму действию из элемента класса, но я не могу ссылаться на макет XML, соответствующий второму действию.

+0

Я не буду следовать за вами здесь .. вы хотите ссылаться на второе действие от виджета, созданного в первом действии? когда вторая еще не создана? – mmark

+0

Практически, я не забочусь о деятельности. Я просто хочу узнать, можно ли ссылаться на файл XML без создания активности. Поскольку все, что я хочу сделать, слишком добавляет некоторые виды в LinearLayout в этот XML-файл, ничего больше. – Vlad

+0

Это что-то вроде http://trickyandroid.com/protip-inflating-layout-for-your-custom-view/, что вы имеете в виду? – mmark

ответ

0

Таким образом, практически единственный способ сделать это - передать переменные через метод onclick.

Что я делаю прямо сейчас: я получаю две переменные String и один Int.Strings, используемый для текста, написанного в textViews и int для идентификатора ресурса для backgroundResource imageView, передает их во второе действие и использует их там, чтобы воссоздать Предмет.

Если кому-то нужна дополнительная информация об этом, оставьте здесь комментарий, и я сделаю все возможное, чтобы помочь.

Смежные вопросы