我正在尝试制作像 this 这样的轮式拾取器我试过下载这个项目,但 .zip 下载中包含的唯一文件是 wheel-demo.apk 和 notes.txt。 Notes.txt 没有任何关于如何在 android studio 中使用这个文件的说明。我找到了一篇建议使用 ListViews 来创建相同效果的帖子。我没有自己制作,而是又花了一天时间在互联网上搜索,我找到了源代码 here但是当我将文件导入我的项目时,IDE 显示了很多错误。通过反复试验,我设法修复了除 3 个错误之外的所有错误。很确定我已将相关代码放在下面
主要 Activity .java:
OnWheelScrollListener scrolledListener = new OnWheelScrollListener()
{
public void onScrollingStarted(WheelView wheel)
{
wheelScrolled = true;// "Cannot resolve symbol wheelScrolled
}
public void onScrollingFinished(WheelView wheel)
{
wheelScrolled = false;// "Cannot resolve symbol wheelScrolled
updateStatus();
}
};
// Wheel changed listener
private final OnWheelChangedListener changedListener = new OnWheelChangedListener()
{
public void onChanged(WheelView wheel, int oldValue, int newValue)
{
if (!wheelScrolled)// "Cannot resolve symbol wheelScrolled
{
updateStatus();
}
}
};
private void initWheel1(int id)
{
WheelView wheel = (WheelView) findViewById(id);
wheel.setAdapter(new ArrayWheelAdapter<String>(wheelMenu1)); //cannot resolve method 'setAdapter(com.projectname.ArrayWheelAdapter<Java.lang.String>)
wheel.setVisibleItems(2);
wheel.setCurrentItem(0);
wheel.addChangingListener(changedListener);
wheel.addScrollingListener(scrolledListener);
}
OnWheelScrollListener.java:
public interface OnWheelScrollListener {
/**
* Callback method to be invoked when scrolling started.
* @param wheel the wheel view whose state has changed.
*/
void onScrollingStarted(WheelView wheel);
/**
* Callback method to be invoked when scrolling ended.
* @param wheel the wheel view whose state has changed.
*/
void onScrollingFinished(WheelView wheel);}
OnWheelChangedListener.java:
public interface OnWheelChangedListener {
/**
* Callback method to be invoked when current item changed
* @param wheel the wheel view whose state has changed
* @param oldValue the old value of current item
* @param newValue the new value of current item
*/
void onChanged(WheelView wheel, int oldValue, int newValue);
}
ArrayWheelAdapter.java
public class ArrayWheelAdapter<T> extends AbstractWheelTextAdapter {
// items
private T items[];
/**
* Constructor
* @param context the current context
* @param items the items
*/
public ArrayWheelAdapter(Context context, T items[]) {
super(context);
//setEmptyItemResource(TEXT_VIEW_ITEM_RESOURCE);
this.items = items;
}
@Override
public CharSequence getItemText(int index) {
if (index >= 0 && index < items.length) {
T item = items[index];
if (item instanceof CharSequence) {
return (CharSequence) item;
}
return item.toString();
}
return null;
}
@Override
public int getItemsCount() {
return items.length;
}
}
所有 3 个 .java 文件都已添加到 MainActivity 的导入列表中,认为它可以解决问题,但没有。 谢谢你到目前为止的建议。
最佳答案
您可以只使用 default NumberPicker自 API 11 起包含在 Android 中。您可以使用 NumberPicker#setDisplayedValues 显示您想要的任何字符串。
XML:
<NumberPicker
android:id="@+id/number_picker"
android:layout_width="match_parent"
android:layout_height="180dp" />
Java:
String[] data = new String[]{"Berlin", "Moscow", "Tokyo", "Paris"};
picker.setMinValue(0);
picker.setMaxValue(data.length-1);
picker.setDisplayedValues(data);
截图:
关于android - 如何制作轮式拾取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053765/