Страница 1 из 1

Изменить TextView в ListView

Добавлено: 30 мар 2014, 16:00
Kirill Kirill
Изменять шрифт применимо к имеющемуся текстВью легко. Но как это сделать если у меня имеется листВью из которого я не знаю как вытащить или что сделать дабы задаить шрифт.
Вот пример моего кода

Код: Выделить всё

import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class QuizMenuActivity extends QuizActivity {
	
	private static long back_pressed;
	Typeface typeface;
	TextView textView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.menu);
		
		String fontPath = "fonts/28.ttf";
		typeface = Typeface.createFromAsset(getAssets(), fontPath);	
	
		
		
		
		ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
		
		
		
		String[] items = {
				getResources().getString(R.string.menu_item_play),
				getResources().getString(R.string.menu_item_settings),
				getResources().getString(R.string.menu_item_help),
				getResources().getString(R.string.menu_item_exit)
		};
		
		
		
		ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items);
		menuList.setAdapter(adapt);
		menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
					long id) {
				textView = (TextView) itemClicked;
				
				textView.setTypeface(typeface);
				
				String strText = textView.getText().toString();
				if (strText.equalsIgnoreCase(getResources().getString(
				R.string.menu_item_play))) {
					startActivity(new Intent(QuizMenuActivity.this, QuizGameActivity.class));
				} else if(strText.equalsIgnoreCase(getResources().getString(
						R.string.menu_item_help))){
					startActivity(new Intent(QuizMenuActivity.this, QuizHelperActivity.class));
				} else if(strText.equalsIgnoreCase(getResources().getString(
						R.string.menu_item_settings))){
					startActivity(new Intent(QuizMenuActivity.this, QuizSettingsActivity.class));
				
				} else if (strText.equalsIgnoreCase(getResources().getString(
						R.string.menu_item_exit))){
					finish();
				}
				
			}
		});
		
	}
		
		
		
Самое главное что при методе онклик можно изменять шрифт, а в методе онКреате сколько не пробовал-все тщетно

Re: Изменить TextView в ListView

Добавлено: 31 мар 2014, 09:41
dimon314
Можно так сделать

Код: Выделить всё

 ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items){
        	 @Override
             public View getView(int position, View convertView, ViewGroup parent) {
        		 LayoutInflater inflater = getLayoutInflater();
        		 View view = inflater.inflate(R.layout.menu_item, null, false);
        		 TextView textView = (TextView) view.findViewById(R.id.textView1);
        		 textView.setTypeface(typeface); 
                 return view;
             }
         }; 

Re: Изменить TextView в ListView

Добавлено: 31 мар 2014, 21:17
Kirill Kirill
При таком коде ошибки не вылетает и приложение запускается, но нужно еще раз присвоить текст =(

Код: Выделить всё

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items){ 
            @Override 
            public View getView(int position, View convertView, ViewGroup parent) { 
            	String[] items = {
        				getResources().getString(R.string.menu_item_play),
        				getResources().getString(R.string.menu_item_settings),
        				getResources().getString(R.string.menu_item_help),
        				getResources().getString(R.string.menu_item_exit)
        		};
            	String fontPath = "fonts/28.ttf";
        		typeface = Typeface.createFromAsset(getAssets(), fontPath);	
        	
                LayoutInflater inflater = getLayoutInflater(); 
                View view = inflater.inflate(R.layout.menu_item, null, false); 
               // for(int i = 0; i < 4; i ++){
                TextView textView = (TextView) view.findViewById(R.id.text); 
                	textView.setText(items[i]);  
              //  }
                textView.setTypeface(typeface);
                 
                return view; 
            } 
        };  
Может кто подсказать как цикл использовать, а то не могу сообразить
У меня к сожалению вышло только сделать все пункты меню с одним именем)))

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 06:50
dimon314
Полный код(если я вас правильно понял)

Код: Выделить всё


import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class QuizMenuActivity extends QuizActivity {

	private static long back_pressed;
	Typeface typeface;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.menu);

		String fontPath = "fonts/28.ttf";
		typeface = Typeface.createFromAsset(getAssets(), fontPath);

		ListView menuList = (ListView) findViewById(R.id.ListView_Menu);

		String[] items = { getResources().getString(R.string.menu_item_play),
				getResources().getString(R.string.menu_item_settings),
				getResources().getString(R.string.menu_item_help),
				getResources().getString(R.string.menu_item_exit) };

		ArrayAdapter<String> adapt = new ArrayAdapter<String>(this,
				R.layout.menu_item, items) {
			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				LayoutInflater inflater = getLayoutInflater();
				View view = inflater.inflate(R.layout.menu_item, null, false);
				TextView textView = (TextView) view
						.findViewById(R.id.text);
				textView.setTypeface(typeface);
				return view;
			}
		};
		menuList.setAdapter(adapt);
		menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View itemClicked,
					int position, long id) {

				switch (position) {
				case (0):
					startActivity(new Intent(QuizMenuActivity.this,
							QuizGameActivity.class));
					break;
				case (1):
					startActivity(new Intent(QuizMenuActivity.this,
							QuizSettingsActivity.class));
					break;
				case (2):
					startActivity(new Intent(QuizMenuActivity.this,
							QuizHelperActivity.class));
					break;
				case (3):
					finish();
					break;
				}
			}
		});
	}
}

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 13:25
Kirill Kirill
Проблема в том, что именно текст перестает отображать текствью. Если я добавлю textView.setText(R.string.menu_item_play);
в ArrayAdapter то выходит такая картина, а если не добавляют то ничего не выводит. Так вот я не понимаю как мне назначить для
каждого последующего текствью свой текст. В приложении скрины

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 13:56
dimon314
menu_item.xml код покажи.

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 14:14
dimon314
Сори, сам неправильно написал, так вроде должно работать

Код: Выделить всё

import android.content.Intent; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
 
public class QuizMenuActivity extends QuizActivity { 
 
    private static long back_pressed; 
    Typeface typeface; 
    String[] items ;

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.menu); 
 
        String fontPath = "fonts/28.ttf"; 
        typeface = Typeface.createFromAsset(getAssets(), fontPath); 
 
        ListView menuList = (ListView) findViewById(R.id.ListView_Menu); 
 
        items = new String[]{ getResources().getString(R.string.menu_item_play), 
                getResources().getString(R.string.menu_item_settings), 
                getResources().getString(R.string.menu_item_help), 
                getResources().getString(R.string.menu_item_exit) }; 
 
        ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, 
                R.layout.menu_item, items) { 
            @Override 
            public View getView(int position, View convertView, ViewGroup parent) { 
                LayoutInflater inflater = getLayoutInflater(); 
                View view = inflater.inflate(R.layout.menu_item, null, false); 
                TextView textView = (TextView) view 
                        .findViewById(R.id.text); 
                textView.setTypeface(typeface); 
                textView.setText(items[position]);
                return view; 
            } 
        }; 
        menuList.setAdapter(adapt); 
        menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
 
            @Override 
            public void onItemClick(AdapterView<?> parent, View itemClicked, 
                    int position, long id) { 
 
                switch (position) { 
                case (0): 
                    startActivity(new Intent(QuizMenuActivity.this, 
                            QuizGameActivity.class)); 
                    break; 
                case (1): 
                    startActivity(new Intent(QuizMenuActivity.this, 
                            QuizSettingsActivity.class)); 
                    break; 
                case (2): 
                    startActivity(new Intent(QuizMenuActivity.this, 
                            QuizHelperActivity.class)); 
                    break; 
                case (3): 
                    finish(); 
                    break; 
                } 
            } 
        }); 
    } 
} 

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 14:19
Kirill Kirill
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="match_parent"
android:textSize="@dimen/menu_item_size"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"
android:shadowRadius="5"
android:gravity="right"
android:layout_marginRight="10dp"
android:textColor="@color/menu_color"
android:shadowColor="@color/menu_glow"
android:shadowDy="3"
android:shadowDx="3" />

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 14:20
dimon314
Код выше проверь.

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 14:25
Kirill Kirill
Спасибо большое , Димон!!!!

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 14:26
dimon314
Не за что.

Re: Изменить TextView в ListView

Добавлено: 01 апр 2014, 17:21
dimon314
Можно немного короче

Код: Выделить всё

@Override 
            public View getView(int position, View convertView, ViewGroup parent) { 
            	View view = super.getView(position, convertView, parent);
                TextView textview = (TextView) view;
                textview.setTypeface(typeface);
                return textview;
            } 

Re: Изменить TextView в ListView

Добавлено: 12 апр 2014, 15:14
Kirill Kirill
Вот такое с самого начал как раз не заехало