gpt4 book ai didi

android - 如何使用 RangeSeekbar 的 onProgressChanged 方法?

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:39 25 4
gpt4 key购买 nike

我已成功将此网站 (http://code.google.com/p/range-seek-bar/) 中的 RangeSeekbar 实现到我的应用程序中。

很多人现在遇到的问题是,我们无法在 RangeSeekbar 的代码中为两个拇指找到 onProgressChanged 方法。

我必须自己编写 onProgressChanged 吗?

我将 RangeSeekbar 实现到 DialogFragment 中。对于普通的 Seekbar,一切正常。

http://www.directupload.net/file/d/3582/mokh6mkb_jpg.htm <-- 如何让“to”左右两个 TextView 显示 RangeSeekbar 的选定值?

到目前为止我的代码:

package com.example.test2;

import com.example.test2.RangeSeekBar.OnRangeSeekBarChangeListener;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.SeekBar;
import android.widget.TextView;

public class LookingAgeFragment extends DialogFragment implements View.OnClickListener, OnRangeSeekBarChangeListener {

protected static final String TAG = null;
public static String username;
static int lowestAge;
static int highestAge;
static TextView viewTo, viewMaxAge, viewMinAge;
RangeSeekBar<Integer> seekBar;


public void onAttach(Activity activity){
super.onAttach(activity);
}


public void onCeate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);



}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view= inflater.inflate(R.layout.fragment_age_looking,null);
getDialog().setTitle(getString(R.string.lookingage_title));
Button button = (Button)view.findViewById(R.id.buttonLeaveFragmentLookingAge);
viewTo = (TextView)view.findViewById(R.id.textView_to);
viewMaxAge = (TextView)view.findViewById(R.id.textView_maxAge);
viewMinAge = (TextView)view.findViewById(R.id.textView_minAge);
button.setOnClickListener(this);

// create RangeSeekBar as Integer range between 20 and 75
seekBar = new RangeSeekBar<Integer>(20, 75, getActivity());
seekBar.setOnRangeSeekBarChangeListener(new OnRangeSeekBarChangeListener<Integer>() {
@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
// handle changed range values
Log.i(TAG, "User selected new range values: MIN=" + minValue + ", MAX=" + maxValue);
}
});

ViewGroup layout = (ViewGroup) view.findViewById(R.id.rangeSeekbarContainer);
layout.addView(seekBar);

setUpLayout();
return view;


}

@SuppressLint("NewApi")
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);

Bundle bundle = this.getArguments();
if(bundle != null){
username = bundle.getString("username", null);
}
}


private void setUpLayout() {
// TODO Auto-generated method stub

setCancelable(false);

//bar.setOnSeekBarChangeListener(yourSeekBarListener);

}


public void saveDataChange(String s, String data){
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);

SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(s, data);
editor.commit();
}

public String getData(String s){
String data;
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);
data = sharedPref.getString(s, null);
return data;
}


@Override
public void onClick(View view) {
// TODO Auto-generated method stub
switch(view.getId()){
case R.id.buttonLeaveFragmentLookingAge:
dismiss();

break;

}
}

public void onProgressChanged() {
// TODO Auto-generated method stub
int maxvalue = (Integer) seekBar.getSelectedMaxValue();
viewMaxAge.setText(maxvalue);
int minvalue = (Integer) seekBar.getSelectedMinValue();
viewMinAge.setText(minvalue);
}

public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}

public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
int maxvalue = (Integer) seekBar.getSelectedMaxValue();
viewMaxAge.setText(maxvalue);
int minvalue = (Integer) seekBar.getSelectedMinValue();
viewMinAge.setText(minvalue);
}

public void onRangeSeekBarValuesChanged(RangeSeekBar bar, Object minValue,
Object maxValue) {
// TODO Auto-generated method stub
viewMaxAge.setText((String)maxValue);

viewMinAge.setText((String)minValue);
}


}

感谢您的帮助。

最佳答案

RangeSeekbar 是一个泛型类。如果您将 T 参数作为范围值的类型传递给它,则 RangSeekBar 将左拇指值作为 minValue 传递,将右拇指值作为 maxValue 传递RangeSeekBar.OnRangeSeekBarChangeListener.(RangeSeekBar bar, T minValue, T maxValue).

你类(class)的变化线延伸到:

public class LookingAgeFragment extends DialogFragment implements OnRangeSeekBarChangeListener<Integer>

之后,您应该在您的代码中将 Object 更改为 Integer

    seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
viewMinAge.setText(String.valueOf(minValue));
viewMaxAge.setText(String.valueOf(minValue));
}
});

我想通过这个改变你的问题将会得到解决。当您的年龄范围不连续且可能是离散的时,对于更通用的解决方案,我建议使用此解决方案

public class LookingAgeFragment extends DialogFragment implements RangeSeekBar.OnRangeSeekBarChangeListener<Integer> {

RangeSeekBar<Integer> seekBar;
int[] ageValues={10, 20, 30, 50, 100};


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

// create RangeSeekBar as Integer range between 20 and 75
seekBar = new RangeSeekBar<Integer>(0, ageValues.length - 1, getActivity());
seekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
@Override
public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
viewMinAge.setText(String.valueOf(ageValues[minValue]));
viewMaxAge.setText(String.valueOf(ageValues[minValue]));
}
});
}

关于android - 如何使用 RangeSeekbar 的 onProgressChanged 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22870285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com